如何在Linq中获得以下输出
如何模拟此Sql查询:
Select A.FID, A.SLNO, A.Date as FromDate, A1.Date ToDate From #Test A Inner Join #Test A1 On A.FID = A1.FID And A1.SLNO = A.SLNO + 1
这使:
要使用此查询提供相同的输出:
var results2 = from table1 in dtSplitDates.AsEnumerable() join table2 in dtSplitDates.AsEnumerable() on new { FID = table1.Field("FID"), SLNO = table1.Field("SLNO")} equals new { FID = table2.Field("FID"), SLNO = table2.Field("SLNO") } into lj from r in lj.DefaultIfEmpty() select dtSplitDates2.LoadDataRow(new object[] { r["FID"], r["SLNO"], r == null ? string.Empty : r["Dates"] }, false);
我无法修改我的选择列表和连接条件 – 当我尝试将Object reference not set to an instance of an object.
有2个表dtSplitDates
和dtSplitDates2
这就是表dtSplitDates
现在的样子, dtSplitDates2
是它的克隆:
lj.DefaultIfEmpty()
将返回null而不带参数。 传递一些默认值。
什么是dtSplitDates2?
你能分享一下你的桌面内容吗?
但我明白,我更喜欢这个解决方案
var results2 = from table1 in dt1.AsEnumerable() join table2 in dt2.AsEnumerable() on new { FID = table1.Field("FID"), SLNO = table1.Field ("SLNO") } equals new { FID = table2.Field ("FID"), SLNO = table2.Field ("SLNO") } into lj from r in lj.DefaultIfEmpty() select new { FID = r["FID"], SLNO = r["SLNO"], Dates = r == null ? string.Empty : r["Date"] };