我想读取相关数据,但只读取特定字段。 如果使用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; }
}
答案 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()