How to populate DataTable with anonymous LINQ result

前端 未结 3 412
误落风尘
误落风尘 2020-12-21 00:49

I have the following LINQ query:

var timesheets = from timesheet in entities.Timesheets
    join timesheetTask in entities.Timesheet_Task on timesheet.Id e         


        
3条回答
  •  鱼传尺愫
    2020-12-21 01:44

    If you really want to populate DataTable:

    // your query
    var timesheets = ...
    
    // design table first
    DataTable table = new DataTable();
    table.Columns.Add(new DataColumn
        {
            ColumnName = "TaskName",
            DataType = typeof(String);
        });
    ...
    
    List list = new List();
    foreach (var t in timesheets)
    {
        var row = table.NewRow();
        row.SetField("TaskName", t.taskName); // extension method from System.Data.DataSetExtensions.dll
        ...
    
        list.Add(row);
    }
    
    DataTable table = list.CopyToDataTable(); // extension method too
    

    Or more LINQ way:

    timesheets
        .Select(t =>
            {
                var row = table.NewRow();
                ...
                return row;
            })
        .CopyToDataTable();
    

    Or in same query syntax. Implement a method:

    static DataRow NewRow(DataRow row, string taskName, ....)
    {
        ...
    }
    

    Then query itself:

    (from ...
     where ...
     select NewRow(table.NewRow(), task.Name, ...)
    ).CopyToDataTable();
    

提交回复
热议问题