我想对一个表进行分组,该表由3列组成:国家,人员名称和等级。
我的目标是:当将一个或多个人的等级分组为NULL的国家/地区时,该特定国家/地区的GroupBy LINQ语句的最终输出应为NULL,而与该国家/地区的其他等级无关。 但是,当我编写以下代码进行分组时,LINQ假定NULL等于零,并返回特定国家/地区的成绩总和。
var query = toIEnumerable.GroupBy(c => c.country).Select(r => new
{
r.Key,
sumGrade = r.Sum(f => f.grade)
});
答案 0 :(得分:2)
您可以使用LINQ的Any
方法来完成此操作:
var query = toIEnumerable.GroupBy(c => c.country).Select(r =>
{
bool someWithNoGrades = r.Any(i => i.grade == null);
return new
{
r.Key,
sumGrade = !someWithNoGrades ? r.Sum(f => f.grade) : null
};
});