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 が true として返されることです。リストに同じ値を持つ int が最大 3 つあるため、false になると思いますか? ( 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 を呼び出すことは true です。あなたがしたい:

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