Linq确定一个值是否超过x次

时间:2013-01-22 11:15:35

标签: c# linq

我有一组具有JobCode的对象,该JobCode是一个字符串值。我们有一个业务规则,在集合中我们应该永远不会有超过4个JobCode相同的元素。我正在努力解决这个问题,因为通常我会比较列表外部的一些已知值,而不是将列表与自身进行比较。

任何帮助都非常感激。

3 个答案:

答案 0 :(得分:21)

您可以通过以下方式识别您的不良工作:

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

目前尚不清楚您希望采取什么补救措施......

答案 1 :(得分:6)

您将在集合上使用GroupBy,而在结果群组中使用Count

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

我们在末尾选择的Key是我们在GroupBy中用作关键字的属性,即它将包含JobCode

答案 2 :(得分:6)

您可以按字符串属性进行分组,然后检查是否有任何超过4个元素的组:

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