Linq Join
Cross Join
This sample shows how to efficiently join elements of two sequences based on equality between key expressions over the two.
Group Join
Using a group join you can get all the products that match a given category bundled as a sequence.
The group join operator is more general than join, as this slightly more verbose version of the cross join sample shows.
A so-called outer join can be expressed with a group join. A left outer joinis like a cross join, except that all the left hand side elements get included at least once, even if they don't match any right hand side elements. Note how Vegetablesshows up in the output even though it has no matching products.
This sample shows how to efficiently join elements of two sequences based on equality between key expressions over the two.
class LinqJoin { static void Main(string[] args) { List<Customer> customer = new List<Customer>() { new Customer{ ID=1,Name="Bhaumik",Status=true}, new Customer{ ID=2,Name="Hardik",Status=true}, new Customer{ ID=3,Name="Rachit",Status=false}, new Customer{ ID=4,Name="Darshan",Status=true}, new Customer{ ID=5,Name="Manan",Status=false}, new Customer{ ID=6,Name="Malay",Status=true}, new Customer{ ID=7,Name="Vishal",Status=false}, new Customer{ ID=8,Name="Raj",Status=true}, new Customer{ ID=9,Name="Rohit",Status=false} }; string[] Name = new string[] { "Bhaumik", "Rachit", "Manan", "Vishal"}; var q = from c in Name join p in customer on c equals p.Name select new { Name = c, p.ID }; foreach (var v in q) { Console.WriteLine(v.ID + ": " + v.Name); } Console.ReadKey(true); } }Output
Group Join
Using a group join you can get all the products that match a given category bundled as a sequence.
string[] categories = new string[]{ "Beverages", "Condiments", "Vegetables", "Dairy Products", "Seafood" }; List<Product> products = GetProductList(); var q = from c in categories join p in products on c equals p.Category into ps select new { Category = c, Products = ps }; foreach (var v in q) { Console.WriteLine(v.Category + ":"); foreach (var p in v.Products) { Console.WriteLine(" " + p.ProductName); } }Cross Join with Group Join
The group join operator is more general than join, as this slightly more verbose version of the cross join sample shows.
string[] categories = new string[]{ "Beverages", "Condiments", "Vegetables", "Dairy Products", "Seafood" }; List<Product> products = GetProductList(); var q = from c in categories join p in products on c equals p.Category into ps from p in ps select new { Category = c, p.ProductName }; foreach (var v in q) { Console.WriteLine(v.ProductName + ": " + v.Category); }Left Outer Join
A so-called outer join can be expressed with a group join. A left outer joinis like a cross join, except that all the left hand side elements get included at least once, even if they don't match any right hand side elements. Note how Vegetablesshows up in the output even though it has no matching products.
string[] categories = new string[]{ "Beverages", "Condiments", "Vegetables", "Dairy Products", "Seafood" }; List<Product> products = GetProductList(); var q = from c in categories join p in products on c equals p.Category into ps from p in ps.DefaultIfEmpty() select new { Category = c, ProductName = p == null ? "(No products)" : p.ProductName }; foreach (var v in q) { Console.WriteLine(v.ProductName + ": " + v.Category); }
Linq Join
Reviewed by Bhaumik Patel
on
8:32 PM
Rating: