C# 如何使用LINQ查询没有匹配同级的实体?
我有以下两个实体C# 如何使用LINQ查询没有匹配同级的实体?,c#,linq,entity-framework,C#,Linq,Entity Framework,我有以下两个实体 class Citation { public int CitationId { get; set; } public string Identifier { get; set; } } class CitationIdentifier { public int CitationIdentifierId { get; set; } public string Identifier { get; set; } } 我正在尝试查询所有引文记录,其中标识符属性与任
class Citation
{
public int CitationId { get; set; }
public string Identifier { get; set; }
}
class CitationIdentifier
{
public int CitationIdentifierId { get; set; }
public string Identifier { get; set; }
}
我正在尝试查询所有引文
记录,其中标识符
属性与任何引文标识符.标识符
属性不匹配。因此,如果我有一个引文
,其标识符
属性包含“foo”,但没有引文标识符
记录,其标识符
属性包含“foo”,那么我想检索该引文
我正在使用IDbSet
有什么想法吗?谢谢。您可以试试这个:
var result = citations.Where(x=>!citationIdentifiers.Any(y=>y.Identifier==x.Identifier));
我假设引文
和引文标识符
是分别包含所有引文和引文标识符的集合
使用Any
扩展方法,您试图检查是否存在标识符值等于当前引用记录标识符值的引用标识符。如果是这样的话,那么这个引文将不会包含在结果中,因为我们取否定
citationIdentifiers.Any(y=>y.Identifier==x.Identifier)
在我们的
Where
扩展方法的内部。您可以尝试以下方法:
var result = citations.Where(x=>!citationIdentifiers.Any(y=>y.Identifier==x.Identifier));
我假设引文
和引文标识符
是分别包含所有引文和引文标识符的集合
使用Any
扩展方法,您试图检查是否存在标识符值等于当前引用记录标识符值的引用标识符。如果是这样的话,那么这个引文将不会包含在结果中,因为我们取否定
citationIdentifiers.Any(y=>y.Identifier==x.Identifier)
在我们的
Where
扩展方法的内部。您可以尝试以下方法:
var result = citations.Where(x=>!citationIdentifiers.Any(y=>y.Identifier==x.Identifier));
我假设引文
和引文标识符
是分别包含所有引文和引文标识符的集合
使用Any
扩展方法,您试图检查是否存在标识符值等于当前引用记录标识符值的引用标识符。如果是这样的话,那么这个引文将不会包含在结果中,因为我们取否定
citationIdentifiers.Any(y=>y.Identifier==x.Identifier)
在我们的
Where
扩展方法的内部。您可以尝试以下方法:
var result = citations.Where(x=>!citationIdentifiers.Any(y=>y.Identifier==x.Identifier));
我假设引文
和引文标识符
是分别包含所有引文和引文标识符的集合
使用Any
扩展方法,您试图检查是否存在标识符值等于当前引用记录标识符值的引用标识符。如果是这样的话,那么这个引文将不会包含在结果中,因为我们取否定
citationIdentifiers.Any(y=>y.Identifier==x.Identifier)
在我们的
Where
扩展方法中。可能是一个except子句?选择除共享标识符之外的所有标识符:
(from citation in Citation select citation)
.Except(
from c in Citation
join ci in CitationIdentifier on c.Identifier equals ci.Identifier
select c);
也许是例外条款?选择除共享标识符之外的所有标识符:
(from citation in Citation select citation)
.Except(
from c in Citation
join ci in CitationIdentifier on c.Identifier equals ci.Identifier
select c);
也许是例外条款?选择除共享标识符之外的所有标识符:
(from citation in Citation select citation)
.Except(
from c in Citation
join ci in CitationIdentifier on c.Identifier equals ci.Identifier
select c);
也许是例外条款?选择除共享标识符之外的所有标识符:
(from citation in Citation select citation)
.Except(
from c in Citation
join ci in CitationIdentifier on c.Identifier equals ci.Identifier
select c);
到目前为止,您尝试了哪些查询,它们以何种方式未能解决您的问题?到目前为止,您尝试了哪些查询,它们以何种方式未能解决您的问题?到目前为止,您尝试了哪些查询,它们以何种方式未能解决您的问题?到目前为止,您尝试了哪些查询,他们以什么方式没能解决你的问题呢?起初,我对自己被打败而感到懊恼,但今天我学会了使用
!collection.Any(谓语)
而不是collection.Where(谓语).Count==0
起初,我为自己的答案被击败而懊恼,但今天我学会了使用!collection.Any(谓语)
而不是collection.Where(谓语).Count==0
起初,我为自己的答案被击败而懊恼,但今天我学会了使用!collection.Any(谓语)
而不是collection.Where(谓语).Count==0
起初,我为自己的答案被击败而懊恼,但今天我学会了使用!collection.Any(谓词)
而不是collection.Where(谓词).Count==0