我有以下代码
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查询语法。
答案 0 :(得分:8)
你想:
var hasFourOfSameValue = groupedMyList.Any(grp => grp.Count() == 4);
如果输入序列包含任何元素,则 Any()
返回true。
答案 1 :(得分:8)
表达式groupedMyList.Select(g => g.Count() == 4)
返回{ false, false, false }
。并且在非空序列上调用任何一个都是正确的。你想要:
var hasFourOfSameValue = groupedMyList.Any(g => g.Count() == 4);