2

我有一张桌子:Material(ID,Name,MAterialParentID)

SELECT  c1.ID,c1.Name as ParentName,c2.id,c2.Name
FROM    Material c1 Left JOIN Material c2
ON      c1.ID = c2.MaterialParentID

ID  ParentName  id  Name
1   Aluminium   2   Cavity
1   Aluminium   3   Copper
1   Aluminium   4   Flooring
2   Cavity     NULL NULL
3   Copper     NULL NULL
4   Flooring   NULL NULL
5   Glass      NULL NULL

我想将上述内容转换SQL QueryLinq Query使用 Liq 到实体。

帮助赞赏!

4

2 回答 2

1

如果表格仅供阅读,您可以简单地创建一个视图,然后在使用逆向工程时确保您已导入视图。

或者如果您确实希望在 LINQ 中完成此操作,这里是 MSDN 示例

var innerJoinQuery =
    from cust in customers
    join dist in distributors on cust.City equals dist.City
    select new { CustomerName = cust.Name, DistributorName = dist.Name };

这就是你的样子

var Material = from M in db.Materials
                       join M2 in db.Materials on M.ID equals M2.MaterialParentID
                       select new {ParentID = M.ID, ParentName = M.Name, M2.ID, M2.Name };

如您所见,我已在上面编辑了我的帖子,我已包含 ParentID 以使所有列都唯一

于 2013-07-17T13:13:29.970 回答
0

对于这种问题linqpad是你的朋友。

我建议像:

var materials = (from m in context.Material 
                let moreMaterials = (from m2 in context.Material where m2.id == m.id select m2).FirstOrDefault()
                select m).ToList();

但是您可以使用 linqpad 来自定义您的查询要求。

于 2013-07-17T13:29:10.510 回答