自引用多对多Linq查询

时间:2010-09-25 03:39:41

标签: c# linq linq-to-sql

我有这样的数据表:

MtoM
{
   ParentID, 
   ChildID
}

Item
{
    ID,
    Data,
    Label
}

如何编写linq查询,该查询返回给定ParentID下的每个ChildID以及每个后代ID的关联数据和标签。如果我使用SQL,我会使用union allinner join,但我不太了解linq。

性能绝对不是问题,因为最多只有3个嵌套级别,每个级别只有1或2个项目。我试图填充的DDL很少使用,也不是关键任务。

1 个答案:

答案 0 :(得分:0)

假设子id在items表中引用ID字段,你可以编写以下查询来获取所需的记录

from mt in MToM 
where mt.ParentID == GivenParentID
join it in Item on mt.ChildId equals it.ID
select new { parentID = mt.ParentID, childID = it.ID, childData = it.Data, childLabel = it.Label}

以匿名类型返回数据。你可以创建新的Type并用结果记录填充它