如何在C#中将SQL左联接查询转换为Linq到Entity
本文关键字:转换 查询 Linq Entity 中将 SQL | 更新日期: 2023-09-27 18:22:43
我有一个表: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
我想使用Liq to Entities将上述SQL Query
转换为Linq Query
感谢帮助!
如果表仅用于读取,您可以简单地创建一个视图,然后在使用反向工程时确保导入了视图。
或者,如果您确实希望在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,使所有列都是唯一的
对于这种问题,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根据您的查询需求进行定制。