как группировать по вложенным свойствам используя linq - PullRequest
0 голосов
/ 15 марта 2020

У меня есть следующие классы:

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; }
}

Я хотел бы получить что-то вроде следующего выбора / группировки разделений для всех методов:

{Id, Mass, MethodCode}. Это нормально для split, например, повторить:

1, 4.4, "Samm"
1, 4.4, "Mani"
2, 2.1, "Samm"
3, 1.5, "Pra"

В конце я хочу иметь возможность взять этот список и спросить что-то вроде: дайте мне сплиты, так что их метод "samm". Если вы можете предложить лучшую структуру, это тоже хорошо. Я получу это с сервера SQL, поэтому я ищу наиболее производительную структуру.

1 Ответ

1 голос
/ 15 марта 2020

Я не уверен, зачем вам нужны Sort или Fraction, но вот как вы можете получить эти значения из той структуры, где splits является IEnumerable<Split>.

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
            })));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...