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 回答