将 SQL 左连接转换为 Linq 表达式左连接
Convert SQL Left Join to Linq Expression Left Join
我有一个来自 SQL 的查询,我正在执行左连接。一切正常。
SELECT Table1.Id, Table1.Comments, Table1.IdListDef
FROM Table2 INNER JOIN Table1 ON Table2.Id = Table1.IdListDef
LEFT JOIN Table3
ON Table1.Id = Table3.IdComments
WHERE Table1.IdListDef = 36 and Table2.IdRev = 1075 and Table3.IdAutor IS NULL
我需要将此查询从 C# 转换为 Linq 表达式。我该怎么做?我不知道如何转换这个包含左连接的查询。
试试这个查询
VAR OBJLIST=(FROM A IN CONTEX.TABLE2
FROM B IN CONTEX.TABLE1.WHERE(X=>X.IdListDef==a.Id && B.IdListDef==36 && B.IdRev==1075 )
FROM C IN CONTEX.TABLE3.WHRE(X=>X.IdComments==a.Id).DefaultEmpty()
where C.IdAutor==NULL
select new{a.Id, a.Comments, a.IdListDef }).ToList()
它应该看起来像这样:
var result = (
from item1 in table1
join item2 in table2 on item1.IdListDef equals item2.Id
join item3 in table3 on item1.Id equals item3.IdComments into finalGroup
from finalItem in finalGroup.DefaultIfEmpty()
where item1.IdListDef == 36 && item2.IdRev == 1075 && finalItem.IdAutor == null
select new
{
item1.Id, item1.Comments, item1.IdListDef
}).ToList();
除了您的评论之外,如果您愿意查看是否有任何项目具有您的外部参数的 ID,您可以使用 linq Any 扩展方法:
bool idExists = result.Any(item => item.id == idAutor);
我有一个来自 SQL 的查询,我正在执行左连接。一切正常。
SELECT Table1.Id, Table1.Comments, Table1.IdListDef
FROM Table2 INNER JOIN Table1 ON Table2.Id = Table1.IdListDef
LEFT JOIN Table3
ON Table1.Id = Table3.IdComments
WHERE Table1.IdListDef = 36 and Table2.IdRev = 1075 and Table3.IdAutor IS NULL
我需要将此查询从 C# 转换为 Linq 表达式。我该怎么做?我不知道如何转换这个包含左连接的查询。
试试这个查询
VAR OBJLIST=(FROM A IN CONTEX.TABLE2
FROM B IN CONTEX.TABLE1.WHERE(X=>X.IdListDef==a.Id && B.IdListDef==36 && B.IdRev==1075 )
FROM C IN CONTEX.TABLE3.WHRE(X=>X.IdComments==a.Id).DefaultEmpty()
where C.IdAutor==NULL
select new{a.Id, a.Comments, a.IdListDef }).ToList()
它应该看起来像这样:
var result = (
from item1 in table1
join item2 in table2 on item1.IdListDef equals item2.Id
join item3 in table3 on item1.Id equals item3.IdComments into finalGroup
from finalItem in finalGroup.DefaultIfEmpty()
where item1.IdListDef == 36 && item2.IdRev == 1075 && finalItem.IdAutor == null
select new
{
item1.Id, item1.Comments, item1.IdListDef
}).ToList();
除了您的评论之外,如果您愿意查看是否有任何项目具有您的外部参数的 ID,您可以使用 linq Any 扩展方法:
bool idExists = result.Any(item => item.id == idAutor);