希望有人可以帮助我
我有一些表链接了Table1-> Table2-> Table3-> Table4 这种关系是一对多的(表1的记录有许多表2的记录,每个记录都有许多表3的记录.......)。
我有一个Table1的ID,我需要获取Table4的任何属性的数据集(仅这些数据)。我可以在LINQ中使用Include和ThenInclude来到达最后一张表,但是...我怎么只能选择这些数据?
我有这样的代码:
_databaseContext.Table1.Where(t1 => t1.Id == id)
.Include(t1 => t1.Table2Nav)
.ThenInclude(t2 => t2.Table3Nav)
.ThenInclude(t3 => t3.Table4Nav)
.ToList();
这向我返回了第一个表的完整结构,但是,我该如何选择Table4的特定属性(假设Table4具有一个名为“ Result”的属性,并且我需要恢复该表的所有值的列表)我可以从表1的ID中找到“结果”。
先感谢
更新:这是类结构的示例:
public class Table1
{
public int Id { get; set; }
public List<Tables12> Tables12Nav { get; set; }
}
public class Tables12
{
public int Id { get; set; }
public Table1 Table1Nav { get; set; }
public Table2 Table2Nav { get; set; }
}
public class Table2
{
public int Id { get; set; }
public List<Tables12> Tables12Nav { get; set; }
public List<Table3> Table3Nav { get; set; }
}
public class Table3
{
public int Id { get; set; }
public Table2 Table2Nav { get; set; }
public List<Table4> Table4Nav { get; set; }
}
public class Table4
{
public int Id { get; set; }
public Table3 Table3Nav { get; set; }
public string Result { get; set; }
}
答案 0 :(得分:1)
您可以使用sql链接来获取数据:
var TableD = from a in db.TableA
join b in db.TableB on a.Id equals b.TableAId
join c in db.TableC on b.Id equals c.TableBId
join d in db.TableD on c.Id equals d.TableCId
where a.Id == 2
select d;
如果您想使用代码,则可以按以下方式检索表4(表d):
var TableD = TableTemp.SelectMany(a => a.TableB.SelectMany(
b => b.TableC.SelectMany(
c => c.TableD
)));