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

Поиск

Категории

Облако тегов

  << Предыдущий пост       Следующий пост >>  
От: peerAt
12. июля 2012 17:26

Давайте рассмотрим пример метода Join в LINQ и C#. Метод Join выполняет внутреннее объединение над двумя последовательностями, корреляция элементов этих последовательностей основывается на совпадении ключей. Это называется объединение по равенству, потому как мы проверяем на равенсво, используя оператор равенства.

Каr вы знаете из реляционных баз данных, внутреннее объединение сопоставляет каждому элементу первой последовательности, соответствующий элемент из второй последовательности. Это если в сравнении участвуют уникальные ключи. Если соответствующего элемента второй последовательности нет, то элемент первой последовательности также на попадает в выходную последовательность. Метод Join() в LINQ работает точно также.

Мы будем использовать два класса Book и Order и используем 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=3, 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; }
}

А здесь пример кода, применяющего Join над коллекциями книг и заказов.

var orderForBooks = from bk in bookList
join ordr in bookOrders
on bk.BookID equals ordr.BookID
select new
{
bk.BookID,
Name = bk.BookNm,
ordr.PaymentMode
};

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

Console.ReadLine();

В коде показанном вверху для сравнения используется оператор равенства. Результат операции помещаем в анонимный тип, который включает BookID, BookName, OrderPaymentMode.

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

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


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

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

Silverlight, HTML5 и непрозрачная стратегия развития Microsoft
Оригинал статьи взят отсюда: Silverlight, HTML5 и непрозрачная стратегия развития Microsoft Автор: Peter Bright Переводчик: Mairon     По непонятным мне на данный момент причинам, похоже, что многие разработчики, присутствовавшие на недавней конференции PDC-2010 (Крупнейшая конференция Microsoft для разработчиков — Прим. переводчика), были сильн...

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




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


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