使用Linq如何
对于以下LINQ
C# code
DataTable dt1=new DataTable();
DataTable dt2 = new DataTable();
....
//DataTable 赋值,都有一个主键ID
....
var result = from a in dt1.AsEnumerable()
join b in dt2.AsEnumerable()
on a.Field<int>("ID") equals
b.Field<int>("ID")
select a;
DataTable 中只有主键ID是已知的,其它列的名称未知,关联查询后,如何返回a与b关联后的结果(包括a和b的字段信息)。类似于SQL中二个表Inner join的结果。
------解决方案--------------------
------解决方案-------------------- from a in dt1.AsEnumerable()
join b in dt2.AsEnumerable()
on a.Field<int>("ID") equals
b.Field<int>("ID")
select new
{
列名1=a.你需要的列1,
列名2=a.你需要的列2,
列名3=b.你需要的列1,
列名4=b.你需要的列2,
......
}
返回类型为IQueryable,可以直接绑定为数据源
绑定表达式可以直接写你自定义的“列名1”,“列名2”...
如果需要手动取值,可以使用反射取值:代码如下:
C# code
foreach (var item in IQueryable)
{
string _str= (item.GetType().InvokeMember("列名1", System.Reflection.BindingFlags.GetProperty, null, item, null)).ToString();
}
------解决方案--------------------
探讨 引用: from a in dt1.AsEnumerable() join b in dt2.AsEnumerable() on a.Field <int>("ID") equals b.Field <int>("ID") select new { 列名1=a.你需要的列1, 列名2=a.你需要的列2, 列名3=b.你需要的列1, 列名4=b.你需要的列2, ...... } 返回类型为IQueryable,可以直接绑定为数据源 绑定表达式可以直接写你自定义的“列名1”,“列名2”... 如果需要手动取值,可以使用反射取值:代码如下: C# codeforeach (var itemin IQueryable) {string _str= (item.GetType().InvokeMember("列名1", System.Reflection.BindingFlags.GetProperty,null, item,null)).ToString(); } 列名1=a.你需要的列1, 列名2=a.你需要的列2, 列名3=b.你需要的列1, 列名4=b.你需要的列2, 这些列的名称都是未知的,能不能取出关联表中全部的列?
------解决方案-------------------- 帮顶,左胸痛,敲键盘都痛
------解决方案-------------------- 探讨 帮顶,左胸痛,敲键盘都痛
------解决方案-------------------- DataSet ds = PrepareDataSet(); DataTable orders = ds.Tables["Orders"]; DataTable customers = ds.Tables["Customers"]; var query = from order in orders.AsEnumerable() join customer in customers.AsEnumerable() on order.Field<string>("CustomerID") equals customer.Field<string>("CustomerID") select new { CustomerID = order.Field<string>("CustomerID"), CompanyName = customer.Field<string>("CompanyName"), OrderDate = order.Field<DateTime>("OrderDate"), OrderID = order.Field<int>("OrderID") };
------解决方案--------------------
也可使用微软知识库里DataSetHelper Distinct、Group by、Join和Create
------解决方案-------------------- 还在研究中,Linq还不大会,帮顶
------解决方案--------------------