2

我有以下代码

 var myList = new List<int>() {10, 10, 10, 9, 15};

 var groupedMyList = myList.GroupBy(i => i).ToList();

 var hasFourOfSameValue = groupedMyList.Select(g => g.Count() == 4).Any();

问题是 hasFour 回归为真。我希望它是错误的,因为列表中最多有三个具有相同值的整数?(我怀疑我在 groupby 调用中出错了,但我不知道如何更改它)。

问题序言:我想使用 LINQ 方法语法而不是 LINQ 查询语法。

4

2 回答 2

8

你要:

var hasFourOfSameValue = groupedMyList.Any(grp => grp.Count() == 4);

Any()如果输入序列包含任何元素,则返回 true。

于 2012-06-14T21:33:22.067 回答
8

表达式groupedMyList.Select(g => g.Count() == 4)返回{ false, false, false }。在非空序列上调用 any 是正确的。你要:

var hasFourOfSameValue = groupedMyList.Any(g => g.Count() == 4);
于 2012-06-14T21:33:55.297 回答