我有以下两个实体......
class Citation
{
public int CitationId { get; set; }
public string Identifier { get; set; }
}
class CitationIdentifier
{
public int CitationIdentifierId { get; set; }
public string Identifier { get; set; }
}
我正在尝试查询Citation
属性与Identifier
属性中的任何一个都不匹配的所有CitationIdentifier.Identifier
条记录。所以,如果我的Citation
Identifier
属性包含“foo”,但没有CitationIdentifier
条记录,其中Identifier
属性包含“foo”,那么我就是我想要检索Citation
。
我正在使用IDbSet<Citation>
。
有什么想法吗?感谢。
答案 0 :(得分:2)
也许是一个except子句?选择除共享标识符的所有内容之外的所有内容:
(from citation in Citation select citation)
.Except(
from c in Citation
join ci in CitationIdentifier on c.Identifier equals ci.Identifier
select c);
答案 1 :(得分:1)
你可以尝试这个:
var result = citations.Where(x=>!citationIdentifiers.Any(y=>y.Identifier==x.Identifier));
我认为citations
和citationIdentifiers
是分别包含所有引文和引文标识符的集合。
使用Any
扩展方法,您尝试检查是否存在任何引用标识符,其标识符值等于当前引文记录的标识符值。如果是这样,那么这个引用就不会包含在结果中,因为我们采取了
citationIdentifiers.Any(y=>y.Identifier==x.Identifier)
在我们的Where
扩展方法中。