我有一组具有JobCode的对象,该JobCode是一个字符串值。我们有一个业务规则,在集合中我们应该永远不会有超过4个JobCode相同的元素。我正在努力解决这个问题,因为通常我会比较列表外部的一些已知值,而不是将列表与自身进行比较。
任何帮助都非常感激。
答案 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);