c# - 如何按属性计算列表中的对象?
问题描述
我反序列化一个 JSON,如:files = JsonConvert.DeserializeObject<Files>(json);
我想计算natives-windows和artifact,所以我使用了 lamba,但我得到了 NullReferenceException。
files.libraries.GroupBy(x => new { x.downloads.artifact, x.downloads.classifiers.natives-windows }).Count();
有我的课:
public class Files
{
public List<Library> libraries { get; set; }
}
public class Library
{
public Downloads downloads { get; set; }
}
public class Downloads
{
public Artifact artifact { get; set; }
public Classifiers classifiers { get; set; }
}
public class Artifact{...}
public class Classifiers
{
public NativesWindows natives-windows { get; set; }
...
}
public class NativesWindows{...}
解决方案
我相信您的 json 数据和您的类之间存在不匹配,因此返回的对象具有空值。
另外我相信您的 LINQ 查询也有问题。
以这种方式尝试。您需要在分组后选择
files.libraries.GroupBy(x => new { x.downloads.artifact,
x.downloads?.classifiers?.natives-windows ?? "default value for nulls" })
.Select(x => new {
Artifact = x.Key.artifact,
NativesWindows = x.Key.natives-windows,
Count = x.Count()
});
请记住,修复 LINQ 查询不会解决您的 NullReferenceException
推荐阅读
- accessibility - 可访问性 - 带有工具提示的无线电选择的焦点顺序
- docker - Docker:容器启动时如何运行apache服务?
- javascript - 是否可以在打字稿的可索引类型接口中定义函数?
- android - Android 导航抽屉重新排序项目
- mysql - 加入表和字符串比较(大型数据集)
- wix - 如何防止 Wix 安装旧版本?
- arrays - Angular 2 如何使用 Ng For 将索引连接到对象及其数组中
- bash - 进程替换和退出代码
- mongodb - 地理空间搜索返回的结果少于可用的结果
- r - 如何指示 R 将 ggplot 保存在执行脚本的同一目录中?