使用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(); }
[解决办法]
[解决办法]
帮顶,左胸痛,敲键盘都痛
[解决办法]
[解决办法]
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子句的,不用查询表达式,这样就可以不用关心列名,直接全部选出
[解决办法]
呵呵,不知道所有列行不行,我也还在我机器上试,
不过有个疑问,不知道表的字段名,你绑定在控件上怎么显示阿,有这种情况的时候吗,