C# 如何使用linq按嵌套属性分组

C# 如何使用linq按嵌套属性分组,c#,sql-server,linq,C#,Sql Server,Linq,我有以下课程: public class Split { public int Id { get; set; } public virtual ICollection<Sort> Sorts { get; set; } public double Mass { get; set; } } public class Sort { public int Id { get; set; } public virtual ICollection<F

我有以下课程:

public class Split
{
    public int Id { get; set; }
    public virtual ICollection<Sort> Sorts { get; set; }
    public double Mass { get; set; }
}
public class Sort
{
    public int Id { get; set; }
    public virtual ICollection<Fraction> Fractions { get; set; }
}
public class Fraction
{
    public int Id { get; set; }
    public Method Method { get; set; }
}
public class Method
{
    public int Id { get; set; }
    public string Code { get; set; }
}
最后,我希望能够得到这个列表,并提出类似这样的问题:给我拆分,这样他们的方法就是samm。如果你能建议一个更好的结构,它也很好。我将从SQL server获取这些值,因此我正在寻找性能最好的结构。

我不确定为什么需要排序或分数,但这里介绍了如何从splits是IEnumerable的结构中获取这些值

或者在方法语法中

var result = splits.SelectMany(
    s => s.Sorts.SelectMany(
        r => r.Fractions.Select(
            f => new
            {
                s.Id,
                s.Mass,
                f.Method.Code
            })));

你要哪个身份证。我猜是分开的。身份证?到目前为止你试过什么?我看不到任何明显的聚合,那么你所说的分组是什么意思呢?@ESG这实际上看起来像是他们想要做与分组相反的事情。
var result = from s in splits
             from r in s.Sorts
             from f in r.Fractions
             select new 
             {
                 s.Id,
                 s.Mass,
                 f.Method.Code
             };
var result = splits.SelectMany(
    s => s.Sorts.SelectMany(
        r => r.Fractions.Select(
            f => new
            {
                s.Id,
                s.Mass,
                f.Method.Code
            })));