读书人

使用Linq怎么

发布时间: 2012-03-25 20:55:16 作者: rapoo

使用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还不大会,帮顶
------解决方案--------------------


学习了
[解决办法]
用查询操作符是可以省略select子句的,不用查询表达式,这样就可以不用关心列名,直接全部选出
[解决办法]
呵呵,不知道所有列行不行,我也还在我机器上试,
不过有个疑问,不知道表的字段名,你绑定在控件上怎么显示阿,有这种情况的时候吗,

读书人网 >.NET

热点推荐