c# - 当非键列中的值之一包含 null 时,如何在 GroupBy 语句中返回 null?
问题描述
我想对一个包含 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)
});
解决方案
您可以使用 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
};
});
推荐阅读
- node.js - 如何解决 Socket.io 客户端等待发射消息直到完成运行发射?
- android-studio - 推荐使用哪个 Android Studio 3.3 Build 变体?
- python - dask可以读取块中的压缩文件吗?
- android - 如何从android中的活动刷新片段列表
- c# - c#:无法与服务器建立连接
- image - 如何使用带有 flatlist 的 react-native-image-carousel 库
- saml-2.0 - SingleLogout 和 Logout 有什么区别?
- java - 我无法使用 jdbc 将 blob 图像插入到 oracle db
- c# - 如何通过表达式树生成的委托调用自己?
- function - ecma5 vs 6 中的函数调用