Linq中的复杂分组?C#.net
本文关键字:net 复杂 Linq | 更新日期: 2023-09-27 18:13:43
各位,
我有几个相互关联的实体:
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的类型为null的情况下,它们的计算结果与其他null相同。
有没有一种优雅的方式来产生这样的分组?
我正在询问除按属性分组1之外的解决方案,按属性分组2内部的解决方案等等。我正在寻找能够吐出我需要的堆的本地解决方案。所以可能是一个有4个键的字典或类似的东西。
我遗漏了什么吗?不只是:
var MainObject.GroupBy(m=>new {
m.Property1,
m.Property2,
m.Property3,
m.PivotObjects.FirstOrDefault(po => po.property5 == criterion1 && po.property6 == criterion2)?.property4)
});