|
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;
}
}
}
|