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# 评估列表中的项是否具有满足条件的属性_C#_Linq - Fatal编程技术网

C# 评估列表中的项是否具有满足条件的属性

C# 评估列表中的项是否具有满足条件的属性,c#,linq,C#,Linq,我试图通过一个列表执行一个简单的任务循环,如果列表中的一个属性包含一个值,它的计算结果应该为true。但是由于某些原因,该值始终返回true,并且列表的计数大于0 var goodsIssuesSubmitted = _goodsissueRepository .Where(gi => gi.attributes.Status == "Submit") .ToList(); var submittedTr = goodsIssuesSubmitted .Selec

我试图通过一个列表执行一个简单的任务循环,如果列表中的一个属性包含一个值,它的计算结果应该为true。但是由于某些原因,该值始终返回true,并且列表的计数大于0

var goodsIssuesSubmitted = _goodsissueRepository
    .Where(gi => gi.attributes.Status == "Submit")
    .ToList();

var submittedTr = goodsIssuesSubmitted
    .Select(gi => gi.relationships.data.Where(g => g.TransportId == _transportId))
    .ToList();

if (submittedTr != null && submittedTr.Count > 0)
{
    goodsIssueHasbeenSubmitted = true;
}

如果根据指定的条件没有从列表中返回任何项,我如何使
goodsissuesubmitted
计算结果为false。

问题在于,当您投影
goodsissuesubmitted
集合以返回
Where
条件的结果时,它对
goodsissuesupmitted
它返回与嵌套条件
g.TransportId==\u TransportId
匹配的子项集合

然后,在if语句中,只检查
submittedTr
集合中是否存在项,而不检查这些项包含的内容。因此,在非空的
GoodsIssueSubmitted
集合的情况下,第二个条件与观察到的行为无关。要修复第二个
的更改,请选择
并将
Where
更改为
任意

您还可以按如下方式简化查询:

goodsIssueHasbeenSubmitted =_goodsissueRepository.Any(i => 
    i.attributes.Status == "Submit" && 
    i.relationships.data.Any(g => g.TransportId == _transportId))) 

仅供参考,
submittedTr
在调用
Select
ToList
后将永远不会为
null
,因此您可以将
if
条件简化为:
if(submittedTr.Any())
另外,您有问题吗?@RufusL是的问题在上面,我对其进行了编辑,使其更加明确。您可以去掉
if
,直接执行作业:
goodsissuebeensubmitted=submittedTr.Any()0,则将变量设置为true)。好的,现在我阅读了接受的答案,了解了问题所在。也许我只是累了,但我从你的帖子上看不出来。事实上,我打算建议合并查询,但我想您可能会在其他地方使用
goodsissuesupmitted
作为其他查询的本地存储库。