Преобразование SQL в linq с правым объединением (дополнительно)

1

У меня есть следующий оператор 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 для этого.

Я использую С#, 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);
                }
            };
  • 0
    Какой код SQL генерируется EF?
  • 0
    Может быть, это может помочь: msdn.microsoft.com/en-us/library/bb397895.aspx
Теги:
linq

1 ответ

0

используйте метод defaultifemty() в следующем способе ссылки....

http://smehrozalam.wordpress.com/2009/06/10/c-left-outer-joins-with-linq/

Ещё вопросы

Сообщество Overcoder
Наверх
Меню