且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

填补LINQ查询的数据表

更新时间:2023-12-01 20:24:04

由于该查询返回类型的DataRow的IEnumerable,你必须指定什么插入到数据表,在这种情况下的DataRow。

 数据表DT = query.CopyToDataTable<&的DataRow GT;(); 

如果您使用



你需要什么新的DataTable .... 
DataTable的DT = query.CopyToDataTable VAR的查询= // LINQ查询();

您表的名称是DT所以选择从原来的DT

$ B $需要什么b
  VAR的查询=从C在db.something 
其中c.othersomething ==onlyyouknow
排序依据c.othersomething
。选择所需的新{NewObject的= c.othersomething};

的DataTable MyDataTable =新的DataTable();
myDataTable.Columns.Add(
新的DataColumn()
{
数据类型= System.Type.GetType(System.String)//或其他类型的
的ColumnName =名称//或其他列名
}
);

的foreach(查询VAR元素)
{
无功行= MyDataTable.NewRow();
行[名称] = element.NewObject;
myDataTable.Rows.Add(行);
}


i am using the below code

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

DataTable dt = query.CopyToDataTable();

But i am getting the below error

Cannot implicitly convert type 'System.Collections.Generic.IEnumerable<appointmentcalendar>' to 'System.Collections.Generic.IEnumerable<System.Data.DataRow>'. An explicit conversion exists (are you missing a cast?)

Since the query returns an IEnumerable of Type DataRow, you have to specify what to insert into the datatable, in this case DataRow.

DataTable dt = query.CopyToDataTable<DataRow>();

If you used

var query = //linq query of what you need for new datatable....
DataTable dt = query.CopyToDataTable();

Your table name is dt so select what you need from the original 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);
}