如何使用.Select实现.ThenInclude?

时间:2019-05-20 06:48:49

标签: c# .net-core entity-framework-core

我想读取相关数据,但只读取特定字段。 如果使用include,那么include将读取所有文件。 所以我使用.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 :(得分:0)

这是因为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()