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

dea*_*vmc 6 c# linq

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

任何帮助非常感谢.

spe*_*der 21

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

Jobs.GroupBy(j => j.JobCode).Where(g => g.Count() > 4)
Run Code Online (Sandbox Code Playgroud)

目前尚不清楚你想采取什么补救措施......


Dan*_*rth 6

您将使用GroupBy集合而不是Count结果组:

var jobCodesWithMoreThanFourOccurences = collection.GroupBy(x => x.JobCode)
                                                   .Where(x => x.Count() > 4)
                                                   .Select(x => x.Key);
Run Code Online (Sandbox Code Playgroud)

Key我们的最终选择是我们用作一个键的属性GroupBy,即它将包含JobCode.


ken*_*n2k 6

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

bool test = jobs.GroupBy(z => z.MyString).Any(z => z.Count() > 4);
Run Code Online (Sandbox Code Playgroud)