我有一对夫妇互相连接的实体:
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
和相同
property2
AND同
property3
和同
PivotObjects.FirstOrDefault(po => po.property5 == criterion1 && po.property6 == criterion2).Select(po => po.property4)
ORPivotObjects.FirstOrDefault(po => po.property5 == criterion1 && po.property6 == criterion2) == null
在我想,因为它需要通过这种组合最初名单分开,有MainObject
的重重叠叠的结果。因此,在可为空的类型为空的情况下,它们的评估与其他空值相同。
有没有一种优雅的方式来产生这样的分组?
我在询问有关groupby property1,property2内部结果组等内容的解决方案。我正在寻找可以吐出我需要的桩的东西。所以可能是一个带有4个键的字典或类似的东西。
这是用于LINQ to Objects,或“out of process”LINQ吗?通过多个属性进行分组非常简单 - 只需使用具有匿名类型的GroupBy(例如'new {mo.property1,mo.property2,mo.property3}',但复杂的第四条标准可能会导致类似LINQ to SQL的问题。 –
你好,乔恩,有懒惰的加载,所以它会从数据库中获取信息,但我不会推回任何东西。我想要的第四个键是来自适当的'PivotObject',或者当没有适当的匹配时为空。我不能通过'PivotObject'本身进行分组,因为'PivotObject'和'MainObject'之间存在多对一的关系。我想一种方法是按三条标准进行分组,然后在“foreach”中适当地分组。 – Nomenator
当你试图做这个分组时,是否已经加载了所有内容?(它不会帮助你的分组看起来使用'criterion1'和'criterion2',它还没有被定义......) –