2012-02-16 25 views
5

私はこのようなdbテーブルをクエリするlinqのクラスを持っています。質問は: どのようにデータをCSVにエクスポートしますか?私はリンクを試して示唆して、私はlinq2csvを使用していますが、順序で列を取得する方法を知りたいですか?ありがとう!csvにエクスポート - Linqクエリ

var usr = from usr in db.User 
select new { usr.UserName, usr.Dept, usr.Name) 
MainListView.DataSource = usr; 
MainListView.DataBind(); 

CsvFileDescription outputFileDescription = new CsvFileDescription 
       { 
        SeparatorChar = ',', 
        FirstLineHasColumnNames = true, 
        FileCultureName = "en-US" 
       }; 

       CsvContext cc = new CsvContext(); 
       string finalPath = mypath + "usr_" + DateTime.Now.ToString ("yyyyMMddhhmmssfff") + ".csv"; 
       cc.Write(usr, finalPath, outputFileDescription); 

答えて

2

あなたが例えば

string mypath = @".\"; 

var usr = (from u in db.User select new User 
       { 
        UserName = u.UserName, 
        Dept  = u.Dept , 
        Name  = u.Name 
       } 
     ); 

CsvFileDescription outputFileDescription = new CsvFileDescription 
    { 
     SeparatorChar = ',', 
     FirstLineHasColumnNames = true, 
     FileCultureName = "en-US" 
    }; 

CsvContext cc = new CsvContext(); 
string finalPath = mypath + "usr_" + DateTime.Now.ToString("yyyyMMddhhmmssfff") + ".csv"; 
cc.Write(usr, finalPath, outputFileDescription); 
+0

私はそれを試みましたが、それを受け入れない日時フィールドがあります。私はdateTimeとして定義されたクラスでそれを持っているとSQLは日時でもあります。何か案は。よろしくお願いします – FAA

+0

SQLカラムでNULLが許される場合は、DateTimeを使用する必要がありますか? DateTimeの代わりに。それが助けにならないなら、あなたはどんなエラーを受けますか? – sgmoore

+0

両方の日時です。また、エラーは次のとおりです。DateTaken = u.DateTaken <--- connot暗黙のdatetimeからdatetimeへの変換。ありがとう – FAA

1

すでにLINQに精通しているので、私は前にマットPerdeckのLINQ2CSV(http://www.codeproject.com/Articles/25133/LINQ-to-CSV-library)を使用してきましたし、それは私の人生はずっと楽作られています。

+0

ユーザーがボタンを押すと、自分のコンピュータにファイルを保存するよう求められます。これを行う簡単な方法もあります。ありがとう – FAA

+0

他のコメント! – FAA

+0

私はそのLinq2csvを使って、この方法で使用しました(最初の投稿で更新)。しかし、私はcsvに出力を得ますが、列の順序はランダムです。どのようにこれを修正するための任意のアイデア? – FAA

1

LINQtoCSVが保存されません、そして、あなたは、このクラスを使用するようにLINQクエリを変更

public class User 
{ 
    [CsvColumn(FieldIndex = 1)] 
    public string UserName { get; set; } 

    [CsvColumn(FieldIndex = 2)] 
    public string Dept { get; set; } 

    [CsvColumn(FieldIndex = 3)] 
    public string Name { get; set; } 
} 

などの属性を持つクラスを定義する必要があり、ソート順序を制御するためにすべてのプロパティで[CsvColumn(FieldIndex = 1)]属性を使用しない限り、列の順序。しかし、誰がそれを望んでいますか?私はServiceStack.Textライブラリを使用します。これは、デフォルトで列の順序を保持します。

文字列csv = ServiceStack.Text.CsvSerializer.SerializeToCsv <>(exportData);このように動作します。

関連する問題