gpt4 book ai didi

c# - 两个选择计数查询之间的linq差异

转载 作者:太空宇宙 更新时间:2023-11-03 18:29:54 24 4
gpt4 key购买 nike

我正在尝试了解 linq 查询。我有一个包含 8 个元素的列表 _taskDetail。我不明白为什么下面的第一个查询返回答案 8?是的,该列表包含 8 个元素,但所有 td.Names 都不同,我已经指定了 td.Name == taskName 那么为什么它返回所有内容,甚至是 td.Name 不等于 taskName 的元素?

第二个查询给了我预期的正确答案 1。

  var Ans1 = _taskDetail.Select(td => td.Name == taskName).Count();

var Ans2 = (from tdList in _taskDetail
where tdList.Name == taskName
select tdList).Count();


Ans1 = 8
Ans2 = 1

最佳答案

第一个版本没有意义,你需要一个Where , 而不是 Select这是一个投影,而不是一个过滤器。

在第一个版本中,Select 将返回一个 IEnumerable<bool>。 (对于列表中的每个项目,如果 Name == taskName 则返回 true,否则返回 false。因此所有项目都将返回,计数将为您提供……列表的计数。

所以

_taskDetail.Where(td => td.Name == taskName).Count();

顺便说一句,你可以简单地做

_taskDetail.Count(td => td.Name == taskName);

细节可能会更好地理解

对应于您的实际(错误)第一个版本(方法语法)的第二个(错误)版本(查询语法)将是

(from tdList in _taskDetail
select tdList.Name == taskName).Count();

关于c# - 两个选择计数查询之间的linq差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24693050/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com