从linq查询中填充数据表

Sha*_*Sen 1 c# linq linq-to-dataset

我正在使用以下代码

IEnumerable<DataRow> query = from c in at.appointmentcalendars.AsEnumerable() 
                             select c;

DataTable dt = query.CopyToDataTable();
Run Code Online (Sandbox Code Playgroud)

但我得到以下错误

无法隐式转换'System.Collections.Generic.IEnumerable<appointmentcalendar>''System.Collections.Generic.IEnumerable<System.Data.DataRow>'.存在显式转换(您是否错过了演员?)

ter*_*zio 8

由于查询返回类型DataRow的IEnumerable,因此必须指定要插入数据表的内容,在本例中为DataRow.

DataTable dt = query.CopyToDataTable<DataRow>();
Run Code Online (Sandbox Code Playgroud)

如果你用过

var query = //linq query of what you need for new datatable....
DataTable dt = query.CopyToDataTable();
Run Code Online (Sandbox Code Playgroud)

你的表名是dt,所以从原来的dt中选择你需要的东西

var query = from c in db.something
            where c.othersomething == "onlyyouknow"
            orderby c.othersomething
            select new { NewObject = c.othersomething };

DataTable MyDataTable = new DataTable();
myDataTable.Columns.Add(
    new DataColumn()
    {
        DataType = System.Type.GetType("System.String"),//or other type
        ColumnName = "Name"      //or other column name
    }
);

foreach (var element in query)
{
    var row = MyDataTable.NewRow();
    row["Name"] = element.NewObject;
    myDataTable.Rows.Add(row);
}
Run Code Online (Sandbox Code Playgroud)