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.
In this example, we saw how to do an Inner Join in LINQ. In an upcoming article, we will see how to do a Left Outer Join in LINQ.
Read some more LINQ Tips
Tweet
1 comment:
This is very good article on linq.
To view more linq example visit this blog. http://jayeshsorathia.blogspot.com/p/linq.html
Post a Comment