LINQ查询左连接多列,空检查失败

时间:2017-06-27 05:55:54

标签: c# postgresql entity-framework linq asp.net-core

ptemod都是内存中的查询,返回tElementRowValuesDBModel类型。在显示此声明之后,两者都不会被执行。

如果我分别调试并查看返回的结果,则两者都成功运行并返回值。

我可以使用Exceptnot in子查询,确定!,但我只是想了解这是一个错误还是有一个解决方法。

奇怪的是,如果我删除对tempe对象的任何引用,一切都运行正常。 我错过了什么吗?

var RealNewNodes = from p in pt
                   join e1 in emod on new{X1 = p.tElementRowsDBModelID, X2 = p.tAttributesDBModelID, X3 = p.AttributeValue} equals new {X1 = e1.tElementRowsDBModelID, X2 = e1.tAttributesDBModelID, X3 = e1.AttributeValue } into tempt
                   from tempe in tempt.DefaultIfEmpty() 
                   where tempe == null //if i remove this line, works OK
                   select new tElementRowValuesDBModel{
                       tElementRowsDBModelID = p.tElementRowsDBModelID,
                       tAttributesDBModelID = p.tAttributesDBModelID,
                       AttributeValue = p.AttributeValue,
                       ID = (tempe!=null ? 1 : 0 )//if i remove this line, works OK
                   };

1 个答案:

答案 0 :(得分:0)

也许如果你没有进行加入,因为你的%s/[0-9a-f][0-9a-f]/0x$&,/g / join意味着找不到匹配的where,它就可以了:

pt