你的代码有N多错误,简直不忍直视 还有,你这写的是leftjoin, 不是rigthjoin 剩下就是基本的语法错误了 ,我就不说了,你自己看代码吧。。 IEnumerable<DataRow> result = from c in dt2.AsEnumerable() where c.Field(3) != null && c.Field(4) != null join p in dt1.AsEnumerable() on new { ID = c.Field(3), NAME = c.Field(4), ACCOUNT = c.Field(5), DATE = c.Field(6), AMOUNT = c.Field(7) } equals new { ID = p.Field(5), NAME = p.Field(6), ACCOUNT = p.Field(7), DATE = p.Field(8), AMOUNT = p.Field(9) } into rightjoin from n in rightjoin.DefaultIfEmpty() select new{ID=c.Field(3),Name=n==null?"":n.Field(6)};
var result = from c in dt2.AsEnumerable() where c.Field(3) != null && c.Field(4) != null join p in dt1.AsEnumerable() on new { ID = c.Field(3), NAME = c.Field(4), ACCOUNT = c.Field(5), DATE = c.Field(6), AMOUNT = c.Field(7) } equals new { ID = p.Field(5), NAME = p.Field(6), ACCOUNT = p.Field(7), DATE = p.Field(8), AMOUNT = p.Field(9) } into rightjoin from n in rightjoin.DefaultIfEmpty() select new{ID=c.Field(3),Name=n==null?"":n.Field(6)};
还有,你这写的是leftjoin, 不是rigthjoin
剩下就是基本的语法错误了 ,我就不说了,你自己看代码吧。。 IEnumerable<DataRow> result =
from c in dt2.AsEnumerable()
where c.Field(3) != null && c.Field(4) != null
join p in dt1.AsEnumerable()
on new { ID = c.Field(3), NAME = c.Field(4), ACCOUNT = c.Field(5), DATE = c.Field(6), AMOUNT = c.Field(7) }
equals new { ID = p.Field(5), NAME = p.Field(6), ACCOUNT = p.Field(7), DATE = p.Field(8), AMOUNT = p.Field(9) }
into rightjoin
from n in rightjoin.DefaultIfEmpty()
select new{ID=c.Field(3),Name=n==null?"":n.Field(6)};
from c in dt2.AsEnumerable()
where c.Field(3) != null && c.Field(4) != null
join p in dt1.AsEnumerable()
on new { ID = c.Field(3), NAME = c.Field(4), ACCOUNT = c.Field(5), DATE = c.Field(6), AMOUNT = c.Field(7) }
equals new { ID = p.Field(5), NAME = p.Field(6), ACCOUNT = p.Field(7), DATE = p.Field(8), AMOUNT = p.Field(9) }
into rightjoin
from n in rightjoin.DefaultIfEmpty()
select new{ID=c.Field(3),Name=n==null?"":n.Field(6)};
另外追问2个问题:
1.您所写的“c.Field(3)",正确的写法是不是应该写成c.Field<int>("3")
2.最后一句select new{ID=c.Field(3),Name=n==null?"":n.Field(6)};有点看不懂,能讲解一下吗?呃如果想选全部字段要怎么写?除了逐一写出还有别的办法吗?
谢谢啦!
因为你的查询是leftjoin,所以右表n的数据可能为空
然后我按您的建议修改了代码,系统在 "":n.Field<int>(“6”) 下面标记错误 “无法确定表达式类型,因为string和int之间没有隐式转换”,n.Field<int>(“6”) 不对了?