ГЛАВНАЯ     АРХИВ     НАПИСАТЬ АДМИНУ     ПОДПИСАТЬСЯ НА RSS     ВОЙТИ      

Поиск

Категории

Облако тегов

  << Предыдущий пост       Следующий пост >>  
От: peerAt
21. марта 2012 17:25

В этом посте мы рассмотрим пример, как сделать Left Join на LINQ.

В Left Outer Join каждый элемент первой коллекции возвращается не смотря на то, что во второй коллекции соответствующих элементов может и не быть.

Давайте рассмотрим это на примере.

class Program
{
static void Main(string[] args)
{
List<Book> bookList = new List<Book>
{
new Book{BookID=1, BookNm="DevCurry.com Developer Tips"},
new Book{BookID=2, BookNm=".NET and COM for Newbies"},
new Book{BookID=3, BookNm="51 jQuery ASP.NET Recipes"},
new Book{BookID=4, BookNm="Motivational Gurus"},
new Book{BookID=5, BookNm="Spiritual Gurus"}
};

List<Order> bookOrders = new List<Order>{
new Order{OrderID=1, BookID=1, PaymentMode="Cheque"},
new Order{OrderID=2, BookID=5, PaymentMode="Credit"},
new Order{OrderID=3, BookID=1, PaymentMode="Cash"},
new Order{OrderID=4, BookID=3, PaymentMode="Cheque"},
new Order{OrderID=5, BookID=5, PaymentMode="Cheque"},
new Order{OrderID=6, BookID=4, PaymentMode="Cash"}
};
}
}

public class Book
{
public int BookID { get; set; }
public string BookNm { get; set; }
}

public class Order
{
public int OrderID { get; set; }
public int BookID { get; set; }
public string PaymentMode { get; set; }
}
}

Давайте рассмотрим Left Outer Join между коллекциями Книг и Заказов:

var orderForBooks = from bk in bookList
join ordr in bookOrders
on bk.BookID equals ordr.BookID
into a
from b in a.DefaultIfEmpty(new Order())
select new
{
bk.BookID,
Name = bk.BookNm,
b.PaymentMode
};

foreach (var item in orderForBooks)
Console.WriteLine(item);

Console.ReadLine();

В коде показаном выше, запрос использует выражение join для сопоставления объектов Книг с объектами Заказы, для проверки используется оператор equality.

Дополнительно, во время проверки соответствия Книги с Заказом, нами используется DefaultIfEmpty(). Используется чтобы создать пустой Заказ для случая, когда Книге не соответствует ни какого Заказа.

Выражение select в примере используется для создания анонимных типов, содержащих BookID, Book Name и Order Payment Mode.

ВЫВОД ПРОГРАММЫ:

image


Это перевод. Оригинал здесь.

Похожие записи


Вопросы на собеседовании C#, Net, ASP.NET, SQL
Продолжая тему вопросов на собеседовании. Нашел еще одну подборку. Оригинал лежит здесь . Перенес, чтобы не затерялось. Есть вполне вменяемые ответы (хотя, на некоторые вопросы ответил бы по-другому). Ответы находятся после списка вопросов, я их не менял. 23. Что такое шаблон проектирования Model/View/Controller? Как и зачем его применяют? 2...

Как сделать 3-х колоночный дизайн сайта c заголовком и подвалом (HTML/CSS) ?
Я не дизайнер. Но это не остановит меня от попытки, когда я выполняю дизайнерскую работу. Как-то помог коллеге с работой дизайнера, когда ему потребовалось сделать 3-х колоночный вывод с шапкой и подвалом. Одним из требований была автоматическая подстройка дизайна к контенту. Мы нашли приемы в наборе скачанных статей. Вот что было там:<!DOCTYPE html PUBLIC "-//...

Способы заработка на сайте
На этом блоге было много постов про производство и раскрутку сайтов. Но пока не было про заработок на них. Пора исправить этот недочет. Здесь будут описаны по возможности не фантастичные, и не супер низко прибыльные способы. Также упор будет сделан именно на организацию процесса, а не технических деталях, которых в обилии в интернете. Несмотря на то, что как пр...

Добавить комментарий




biuquote
  • Комментарий
  • Предпросмотр
Loading


  Сохранить комментарий