我正在尝试使用 LinQ 对两个数据表执行左连接,其中有两个 WHERE 子句。这是代码片段:
我尝试过以下代码片段:
var resultList = (from p in mainlineQuery1.AsEnumerable()
join t in mainlineQuery4.AsEnumerable()//.Where(x => x.Field<string>("mainlineidc") == null)
on p.Field<string>("globalid") equals t.Field<string>("featureguid")
into tempJoin
from temp in tempJoin.DefaultIfEmpty()
where p.Field<string>("circuitid2") != null && temp.Field<string>("mainlineidc") == null
select new
{
featClass = p.Field<string>("FeatureClass"),
globalId = p.Field<string>("globalid"),
circuitId = p.Field<string>("circuitid"),
circuitId2 = p.Field<string>("circuitid2"),
subtypecd = Convert.ToString(p.Field<decimal>("subtypecd")),
operatingnumber = p.Field<string>("operatingnumber") //== string.Empty ? string.Empty : temp.Field<string>("mainlineidc")
}).ToList();
记录数与 SQL Developer 记录不匹配。
任何帮助将不胜感激!!
通过将代码更改为来修复它:
var resultList = (from p in mainlineQuery1.AsEnumerable()
join t in mainlineQuery4.AsEnumerable()
on p.Field<string>("globalid") equals t.Field<string>("featureguid")
into tempJoin
from temp in tempJoin.DefaultIfEmpty()
where p.Field<string>("circuitid2") != null
select new
{
featClass = p.Field<string>("FeatureClass"),
globalId = p.Field<string>("globalid"),
circuitId = p.Field<string>("circuitid"),
circuitId2 = p.Field<string>("circuitid2"),
subtypecd = Convert.ToString(p.Field<decimal>("subtypecd")),
operatingnumber = p.Field<string>("operatingnumber"),
mainlineidc= temp == null ? null: temp.Field<string>("mainlineidc")
}).Where(x=> string.IsNullOrEmpty(x.mainlineidc)).ToList();