繁体   English   中英

使用右连接将SQL转换为linq(高级)

[英]Converting SQL to linq with a right join (advanced)

我有以下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/

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM