Let see an example of using the Join method in LINQ and C#. The Join method performs an inner equijoin
on two sequences, correlating the elements of these sequences based on
matching keys. It is called equijoin, since we are testing for equality
using the equals operator.
If you are familiar
with relational databases, then in an inner join, each element of the
first collection appears one time for every matching element in the
second collection. If an element in the first collection has no matching
elements, it does not appear in the join result set. The Join method in
LINQ does the same.
We will using two classes Book and Order and use the Join operator on them and see the results. Here’s some sample data:
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; } }Let us apply a Join between Book and Order collection
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();
In
the code shown above, the query uses the join clause to match Book
objects with Order objects testing it for equality using the equals
operator.The select clause defines how the result will appear using
anonymous types that consist of the BookID, Book Name and Order Payment
Mode.
OUTPUT
As
you can see, ‘DevCurry.com Developer Tips’ and ‘Spiritual Gurus’ are
listed twice as the books have two orders each. However ‘.NET and COM
for Newbies’ does appear in the results, since there are no orders for
that book.
No comments:
Post a Comment