7

文字列値であるJobCodeを持つオブジェクトのコレクションがあります。コレクション内に、JobCodeが同じである要素が4つを超えてはならないというビジネスルールがあります。私はこれに苦労しています。なぜなら、通常、リストをそれ自体と比較するのではなく、リストの外部にある既知の値と比較しているからです。

どんな助けでも大歓迎です。

4

3 に答える 3

22

あなたはあなたの悪い仕事を次のように特定することができます:

Jobs.GroupBy(j => j.JobCode).Where(g => g.Count() > 4)

あなたがどのような是正措置を取りたいのかは明確ではありません...

于 2013-01-22T11:17:44.970 に答える
8

文字列プロパティでグループ化してから、4つを超える要素を持つグループがあるかどうかを確認できます。

bool test = jobs.GroupBy(z => z.MyString).Any(z => z.Count() > 4);
于 2013-01-22T11:18:38.930 に答える
7

GroupByコレクションで使用しCount、結果のグループよりも使用します。

var jobCodesWithMoreThanFourOccurences = collection.GroupBy(x => x.JobCode)
                                                   .Where(x => x.Count() > 4)
                                                   .Select(x => x.Key);

最後に選択するのKeyは、のキーとして使用したプロパティです。GroupByつまり、が含まれますJobCode

于 2013-01-22T11:17:26.807 に答える