Finally, I have had a chance to play around with LINQ. And for the first day of this decade, behold my first LINQ query (executed on the Adventureworks2008 database):
private void Form1_Load(object sender, EventArgs e)
{
AdventureWorks2008DataSet1 advWks = new AdventureWorks2008DataSet1();
AdventureWorks2008DataSet1TableAdapters.BillOfMaterialsTableAdapter bt = new WindowsFormsApplication1.AdventureWorks2008DataSet1TableAdapters.BillOfMaterialsTableAdapter();
AdventureWorks2008DataSet1TableAdapters.ProductTableAdapter pt = new WindowsFormsApplication1.AdventureWorks2008DataSet1TableAdapters.ProductTableAdapter();
AdventureWorks2008DataSet1TableAdapters.UnitMeasureTableAdapter ut = new WindowsFormsApplication1.AdventureWorks2008DataSet1TableAdapters.UnitMeasureTableAdapter();
bt.Fill(advWks.BillOfMaterials);
pt.Fill(advWks.Product);
ut.Fill(advWks.UnitMeasure);
var query =
from prod in advWks.Product.AsEnumerable()
join bill in advWks.BillOfMaterials.AsEnumerable()
on prod.ProductID equals bill.ComponentID
where prod.FinishedGoodsFlag == true
&& prod.ReorderPoint < 100
&& prod.StandardCost < 800
select new
{
ProductName = prod.Name,
Colour = prod.Color,
SafetyLevel = prod.SafetyStockLevel,
UnitMeasure = bill.UnitMeasureCode
};
dataGridView1.DataSource = query.ToList();
}