使用右连接将SQL转换为linq(高级)
本文关键字:linq 高级 转换 SQL 连接 | 更新日期: 2023-09-27 18:08:04
我有以下SQL语句:
SELECT dh.*
FROM table1 w
LEFT OUTER JOIN table2 dh
on w.CBranch = dh.CBranch
AND w.CWorkstation = dh.CWorkstation
AND w.CNumber = dh.CNumber
RIGHT OUTER JOIN table3 dl
on dh.Id = dl.DispatchHeaderId
AND w.CLine = dl.CLine
AND w.CLineVersion = dl.CVersion
where w.ItemStatus = 9
AND dh.Shipping = 0
ORDER BY dh.CNumber ASC
我是Linq的初学者,不知道如何做高级Linq。
有没有人可以指导我写等效的linq。
我使用c#, EF4.
我已经设法到达这里,但不确定这是否正确。
var wos = scope.Context.table1.Where(
a => a.ItemStatus == (short)LineStatus.Packed)
.GroupBy(a => new { a.CNumber, a.CBranch, a.CWorkstation})
.Select(a => a.FirstOrDefault()).ToList();
var headerGroups = new List<IEnumerable<table2>>();
foreach(var status in wos)
{
if (status == null)
{
continue;
}
var headerList = scope.Context.table2s.Where(
b => b.CBranch == status.CBranch &&
b.CNumber == status.CNumber &&
b.CWorkstation == status.CWorkstation).ToList();
if (headerList != null && headerList.Any())
{
headerGroups.Add(headerList);
}
};
在以下链接方式中使用defaultifemty()方法....
http://smehrozalam.wordpress.com/2009/06/10/c-left-outer-joins-with-linq/