using System.Data.SqlClient; ........ static IEnumerable<JoinData> JoinTables() { using (SqlConnection conn = new SqlConnection( "Data Source=JEFFRAY;Initial Catalog=Northwind;Integrated Security=True")) { SqlDataAdapter adapter1 = new SqlDataAdapter("SELECT * FROM Customers", conn); SqlDataAdapter adapter2 = new SqlDataAdapter("SELECT * FROM Orders", conn); DataTable dt1 = new DataTable("Customers"); DataTable dt2 = new DataTable("Orders"); adapter1.Fill(dt1); adapter2.Fill(dt2); return Enumerable.Join<DataRow,DataRow,string,JoinData>( DataTableExtensions.AsEnumerable(dt2), DataTableExtensions.AsEnumerable(dt1), delegate(DataRow s1) { return s1.IsNull("CustomerID") ? null : (string)s1["CustomerID"]; }, delegate(DataRow s2) { return s2.IsNull("CustomerID") ? null : (string)s2["CustomerID"]; }, delegate(DataRow s1,DataRow s2) { JoinData result = new JoinData(); result.OrderID = s1.IsNull("OrderID") ? -1 : (int)s1["OrderID"]; result.CompanyName = s2.IsNull("CompanyName") ? string.Empty : (string)s2["CompanyName"]; return result; }); } } ......... public class JoinData { private int _orderID; private string _companyName; public int OrderID { get { return _orderID; } set { _orderID = value; } } public string CompanyName { get { return _companyName; } set { _companyName = value; } } } |