Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/258.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何使用LINQ查询没有匹配同级的实体?_C#_Linq_Entity Framework - Fatal编程技术网

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