Как использовать .Выбрать для достижения .ThenInclude? - PullRequest
0 голосов
/ 20 мая 2019

Я хочу прочитать связанные данные, но только для чтения конкретного поля.если использовать include, тоincinclude будет читать все fiedl.поэтому я использую .Select, но как использовать .Select для достижения .ThenInclude?Спасибо ~

var ViewModel = await _context.A_Table
                .Select(s => new ViewModel {
                    A_TableId = s.Id,
                    B_Table = s.B_Table,
                    C_Table = ??? (s.B_Table.C_Table is wrong)
                });
public class A_Table
    {
        public int Id { get; set; }
        public string Field1 { get; set; }
        public IList<B_Table> B_Table { get; set; }
    }

public class B_Table
    {
        public int Id { get; set; }
        public string Field1 { get; set; }
        public int A_TableId { get; set; }
        public int C_TableId { get; set; }
        public C_Table C_Table { get; set; }
    }

public class C_Table
    {
        public int Id { get; set; }
        public string Field1 { get; set; }
        public B_Table B_Table { get; set; }
    }

1 Ответ

0 голосов
/ 20 мая 2019

это потому, что свойство B_Table является списком B_Table, поэтому, когда вы хотите получить доступ к свойству C_Table внутри него, вы должны указать, к какому элементу в списке вы хотите получить доступ

например, s.B_Table[0].C_Table для доступа к первому элементу в списке.

, если вы хотите объединить все элементы в списке, который вы можете использовать SelectMany, используя Linq внутри пространства имен System.Linq

например s.B_Table.SelectMany(B_Table => B_Table.C_Table).ToList()

...