我有一个 List<Item>
每个 Item 都有一个 Program,它有一个 Id。
如果一个项目还没有链接到一个程序,它的程序将为空。
我想按它的程序 ID 对所有项目进行分组
这是我试过的:
var listaAgrupada = client.ListarItens(null, null, null).GroupBy(x => x.Programa.Id).ToList();
如果所有项目都有一个程序,这就有效。但是如果程序为空,它会抛出 System.NullReferenceException:
Message = "Object reference not set to an instance of an object."
我认为这是因为 Program 为空,我无法访问它的 ID。
我需要所有项目,即使它们的程序为空(我也希望它们按空程序分组),所以排除它们不是一个选项。
我想过两种可能的解决方案,但我不确定如何去做:
一个会是这样的GroupBy(x => x.Programa == null || x.Programa.Id)
(这是行不通的)
另一种是在 program 为 null 的地方添加一个空的程序对象,但我不知道该怎么做
当然,我也对其他解决方案持开放态度
提前致谢
最佳答案
假设您可以将所有 null
程序组合在一起,并且 Id
将是非负的,这样的事情怎么样:
GroupBy(x => x.Programa == null ? -1 : x.Programa.Id)
关于c# - 具有可能的空对象的 Id 的 GroupBy,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5782915/