Левое внешнее соединение в linq - PullRequest
3 голосов
/ 19 октября 2010

У меня следующий запрос, но я не знаю, как выполнить левое внешнее соединение в таблице 1.

var query = (from r in table1
             join f in table2
                 on r.ID equals f.ID
             select new
             {     
                 r.ID, 
                 r.FirstName,
                 r.LastName,
                 FirstNameOnRecord = 
                     (f != null ? f.FirstName : string.Empty),
                 LastNameOnRecord = 
                     (f != null ? f.LastName : string.Empty),
                 NameChanged = 
                     (f != null 
                         ? (f.FirstName.CompareTo(r.FirstName) == 0 
                             && f.LastName.CompareTo(r.LastName) == 0) 
                         : false)
             }).ToList();

Ответы [ 4 ]

5 голосов
/ 19 октября 2010

См. это или это примеры, чтобы узнать больше, и в вашем случае это будет примерно так:

5 голосов
/ 19 октября 2010

Вот большая разбивка левого внешнего соединения .

3 голосов
/ 19 октября 2010

Вы видели эти примеры ? Возможно, вы заинтересованы в этой части о левом внешнем соединении в Linq.

0 голосов
/ 03 апреля 2014

Использование лямбда-выражения

db.Categories    
  .GroupJoin(
     db.Products,
     Category => Category.CategoryId,
     Product => Product.CategoryId,
     (x, y) => new { Category = x, Products = y })
  .SelectMany(
     xy => xy.Products.DefaultIfEmpty(),
     (x, y) => new { Category = x.Category, Product = y })
  .Select(s => new
  {
     CategoryName = s.Category.Name,     
     ProductName = s.Product.Name   
  })
...