Linq语法中的Any()函数

3
我有一个伪对象。
list<ListOfCars>{
   list<ListOfParts>
}

我目前有这个查询

ListOfCars.Where(x => x.ListofParts.Any(y => y.PartIsDeleted == false));

在我的调查中,如果至少有1个项目满足Any(y => y.PartIsDeleted == false)条件,则会返回一些内容。

我的问题是这样的语法是什么。

SELECT * FROM ListOfCars cars WHERE  cars.ListOfParts.PartIsDeleted = false

ListOfParts是一个列表。你必须使用像 AnyAll 这样的聚合函数。 - Tommy
是的,这就是为什么我使用了Any(),但如果没有任何项满足Any()内部的条件,它似乎不返回任何内容。 - user3770093
“Any” 意味着至少有一个满足条件。 - Tommy
1
你能发一些真正的C#代码而不是伪代码吗?很难理解你的伪代码实际上意味着什么。 - Blorgbeard
嗨大家,Tommy的第三个代码有效了。感谢你们的努力!我现在正试图理解 Any(y => y.PartIsDeleted == false) 和 Any(y => y.PartIsDeleted) == false 之间的区别。 - user3770093
显示剩余2条评论
1个回答

3

在使用AnyAll时,有三种简单的组合方式。

  1. 任意一个
  2. 全部
  3. 没有

一定要明确你想要哪一种。


ListofParts中至少有一个未被删除。

ListOfCars.Where(x => x.ListofParts.Any(y => y.PartIsDeleted == false));

所有的ListofParts都没有被删除。
ListOfCars.Where(x => x.ListofParts.All(y => y.PartIsDeleted == false));

ListofParts中没有任何部件被删除

ListOfCars.Where(x => x.ListofParts.Any(y => y.PartIsDeleted) == false);

我认为你是正确的,即使你的代码与海报相同,他说它有问题。 - MichaelMao
嗨Tommy,第三个确实起作用了!但我可以请求一个帮忙吗?你能解释一下为什么吗?我似乎看不出Any(y => y.PartIsDeleted == false)和Any(y => y.PartIsDeleted) == false之间的区别。 - user3770093
1
这只是逻辑。试着用英语说,你会看到区别的。https://dotnetfiddle.net/tw1Vcn - Tommy
请仔细查看最后一个括号上的闭合括号。 - silvalli

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接