8,497
社区成员
发帖
与我相关
我的任务
分享
from t1 in dsOrder.Tables[0].AsEnumerable()
from t2 in dsOrderDay.Tables[0].AsEnumerable()
where t1.Field<string>("OrderNo") == t2.Field<string>("OrderNo")
select.....
var query=dsOrder.Tables[0].AsEnumerable().Join(
dsOrderDay.Tables[0].AsEnumerable(),
m => { return m.Field<string>("OrderNo"); },
n => { return n.Field<string>("OrderNo"); },
(m, n) => new { //这里就放要select 的字段 如 orderno=m.Field<string>("OrderNo"); });
最好用from select 的方式,创造出linq查询就是为了方便,.join,..any...等方法是用来给机器用的中间语言,虽然我们也可直接用,但并不符合人脑的思维方式,所以感觉更麻烦。
dt1.AsEnumerable().Join(dt2.AsEnumerable(), r => r.Field<string>("OrderNo"), r => r.Field<string>("OrderNo"), (r, r1) => r);
var result = Enumerable.Join(dt1.AsEnumerable(), dt2.AsEnumerable(), (row) => { return ""; }, (row) => { return ""; }, (m, n) =>
{
if (m[0].ToString() == n[0].ToString())
{
return true;
}
return false;
});
[/quote]
或者:
var result = dt1.AsEnumerable().Join(dt2.AsEnumerable(), (row) =>
{ return ""; }, (row) => { return ""; }, (m, n) =>
{
return new
{
dt1Col1 = m[0].ToString(),
dt1Col2 = m[1].ToString(),
dt2Col1 = n[0].ToString(),
dt2Col2 = n[1].ToString()
};
});
[/quote]
参考你的我改成:
dsOrder.Tables[0].AsEnumerable().Join(
dsOrderDay.Tables[0].AsEnumerable(),
m => { return m.Field<string>("OrderNo"); },
n => { return n.Field<string>("OrderNo"); },
(m, n) => { return m.Field<string>("OrderNo")== n.Field<string>("OrderNo"); }).Select(obj=> new { });
有点不对劲,到Select后Obj变成布尔类型了,其实我就是想Join后,OrderNo等于OrderNo, 再将两个对象传到Select进行列删选。
var result = Enumerable.Join(dt1.AsEnumerable(), dt2.AsEnumerable(), (row) => { return ""; }, (row) => { return ""; }, (m, n) =>
{
if (m[0].ToString() == n[0].ToString())
{
return true;
}
return false;
});
[/quote]
或者:
var result = dt1.AsEnumerable().Join(dt2.AsEnumerable(), (row) =>
{ return ""; }, (row) => { return ""; }, (m, n) =>
{
return new
{
dt1Col1 = m[0].ToString(),
dt1Col2 = m[1].ToString(),
dt2Col1 = n[0].ToString(),
dt2Col2 = n[1].ToString()
};
});
var result = Enumerable.Join(dt1.AsEnumerable(), dt2.AsEnumerable(), (row) => { return ""; }, (row) => { return ""; }, (m, n) =>
{
if (m[0].ToString() == n[0].ToString())
{
return true;
}
return false;
});