人,
我有几个相互关联的实体:
public class MainObject {
public Guid property1; //one-to-many relationship
public Guid? property2;
public int? property3;
public List<PivorObject> PivotObjects; //one-to-many relationship
}
public PivotObject {
public Guid property4; //one-to-many relationship
public long property5;
public long property6;
}
我需要使用以下条件对List<MainObject>
进行分组:
相同property1
AND
相同property2
AND
相同property3
AND
相同PivotObjects.FirstOrDefault(po => po.property5 == criterion1 && po.property6 == criterion2).Select(po => po.property4)
或PivotObjects.FirstOrDefault(po => po.property5 == criterion1 && po.property6 == criterion2) == null
在结果中,我希望通过此组合分隔初始列表所需的MainObject
堆。因此,在可空类型为null的情况下,它们与其他空值的评估方式相同。
是否有一种优雅的方式来制作这样的分组?
我问的是除了groupby property1之外的解决方案,在property2的结果组中,等等。我正在寻找可以吐出我需要的堆的本地东西。所以可能是一个有4个键或类似东西的字典。
答案 0 :(得分:0)
我错过了什么吗?不只是:
var MainObject.GroupBy(m=>new {
m.Property1,
m.Property2,
m.Property3,
m.PivotObjects.FirstOrDefault(po => po.property5 == criterion1 && po.property6 == criterion2)?.property4)
});