Export to csv - Linq query

前端 未结 3 1883
感情败类
感情败类 2021-01-19 00:44

I have a class in linq that query db table like this, and the question is: How do I export that data to csv? I have tried link suggested and I am using linq2csv and still w

相关标签:
3条回答
  • 2021-01-19 01:18

    LINQtoCSV doesn't preserve your column order unless you use the [CsvColumn(FieldIndex = 1)] attribute on all your properties. But who wants to do that? I would use ServiceStack.Text library. It preserves column orders by default. Works like this:

    string csv = ServiceStack.Text.CsvSerializer.SerializeToCsv<>(exportData);

    0 讨论(0)
  • 2021-01-19 01:28

    In order to control the sort order you must define a class with attributes like

    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; }
    }
    

    Then you change your linq query to use this class, eg

    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 讨论(0)
  • 2021-01-19 01:36

    Since you're already familiar with LINQ, I've used Matt Perdeck's LINQ2CSV ( http://www.codeproject.com/Articles/25133/LINQ-to-CSV-library ) before and it's made my life a lot easier.

    0 讨论(0)
提交回复
热议问题