2016-07-11 16 views
-3

私はデータベース内のものを検索するlinqクエリを作成しようとしています。データを取得した場合は、結果を.csvファイルに戻す必要があります。これは私のクエリですlinqクエリの結果を.csvファイルに書き込むmvc

var query = from a in db.User where a.id.Equals(table.id) 
      select a; 

私はこのクエリを使用してデータベースに結果を書き込むことができます。 イム使用してC#のMVC

更新

今、これは私の方法である:

public FileContentResult ConnectToDatabase(Requests uc) 
    { 
     Context db = new Context(); 
     var query = (from a in db.Request 
        where a.Idnumber.Equals(uc.Idnumber) 
        select a); 

     string csv = string.Concat(from re in query 
            select string.Format("{0},{1},{2}\n", re.Idnumber, re.RequestStartDate, re.RequestEndDate)); 


     return File(new System.Text.UTF8Encoding().GetBytes(csv), "text/csv", "Report.csv"); 

    } 

、私はこのエラーを取得しています:「エンティティへのLINQは方法「システムを認識しません。 String Format(System.String、System.Object、System.Object) "

+1

csvとデータベースに対して2つの別々の書き込みを要求しています。どちらですか?さらに、クエリは正常に見えます。それはCSVに書き込むことと何が関係していますか?これまでに何を試しましたか? –

+0

@DavidL私の更新を確認してください。私のクエリから返された結果をcsvファイルに書き込むことを希望します –

答えて

1

ここでの問題はqueryIQueryableなので、select string.Format("{0},{1},{2}\n ... Entity Frameworkは、それをSQLに変換しようとしますが、それはできません。

ですから、この解決することができますいくつかの方法があります:

1)IQueryableを保つが、EFは、SQLに変換できるような方法でCSV行を構築:

var csv = string.Concat(query.Select(re => re.IdNumber + "," + re.RequestStartDate + "," + re.RequestEndDate + "\n)); 

2)queryをマテリアライズに変換され、string.Formatの呼び出しはSQLではなくC#で行われます。

var query = (from a in db.Request 
        where a.Idnumber.Equals(uc.Idnumber) 
        select a).ToList(); 
+0

ありがとうございます@Pedro、私はクエリで.AsEnumerable()を使用しました –

関連する問題