日期:2014-05-20  浏览次数:20766 次

求救,关于LINQ TO DATASET返回两个DATAROW集的问题
实例:
原先的系统是通过dbHelper获得两个DataTable dtItem和dtSubject,我现在需要做二次开发,但对LINQ不是太熟,其中
var valu = from item in dtItem.AsEnumerable()
           join subject in dtSubject.AsEnumerable() on item.Field<string>("SubMark") equals subject.Field<string>("SubMark")
           where subject.Field<bool>("SubIsDeleted") == false
           select new { item, subject };

以上LINQ查询语句中,我如何不用foreach直接把item和subject转成DataTable
------最佳解决方案--------------------
DataTable dt = new DataTable();
dt.Columns.Add("item");
dt.Columns.Add("subject");
valu.ToList().ForEach(x => dt.Rows.Add(x.item, x.subject));
------其他解决方案--------------------

DataTable dtItem2 = dtItem.Clone();
DataTable dtSubject2 = dtSubject.Clone();

foreach(var n in valu)
{
   dtItem2.Rows.Add(n.item);
   dtSubject2.Rows.Add(n.subject);
}


------其他解决方案--------------------
谢谢caozhy,我这里的item,subject是DataRow集合,并不是两个字段,正如

var valu = from item in dtItem.AsEnumerable()
  join subject in dtSubject.AsEnumerable() on item.Field<string>("SubMark") equals subject.Field<string>("SubMark")
  where subject.Field<bool>("SubIsDeleted") == false
  select item;

中的item一样
------其他解决方案--------------------
DataTable dt = new DataTable();
dt.Columns.Add("item");
dt.Columns.Add("subject");
valu.ToList().ForEach(x => dt.Rows.Add(x.item["字段名1"].ToString(), x.subject));

只是举例,你照着写
------其他解决方案--------------------
没有像CopyToDataTable()这种便捷的方法吗
------其他解决方案--------------------
谢谢各位,foreach的方法我是知道的,不过这样如果数量大的话会不会影响效率