2013-01-22 40 views
5

我有一個具有JobCode的對象集合,這是一個字符串值。我們有一個業務規則,說在集合中,我們不應該有超過4個元素的JobCode是相同的。我正在努力解決這個問題,因爲通常我會比較列表外部的一些已知值,而不是將列表與自身進行比較。Linq確定值是否出現超過x次

任何幫助非常感謝。

回答

17

你可以認同你的壞工作:

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

目前尚不清楚你想採取什麼補救措施?

+0

啊,這是我所缺少的部分,這似乎使一個子集合適用於critera。謝謝(還剩4分鐘可以接受) – deanvmc

6

你會在收集使用GroupByCount上,得到的組:

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

我們在最後選擇的Key是我們在GroupBy用作鍵的屬性,即它將包含JobCode

5

您可以通過您的字符串屬性組,然後檢查是否有任何有超過4個元素的組:

bool test = jobs.GroupBy(z => z.MyString).Any(z => z.Count() > 4);