यदि आपको LINQ का उपयोग करने की अनुमति है, तो निम्न उदाहरण देखें। यह पूर्णांक कॉलम के साथ दो डेटाटेबल्स बनाता है, उन्हें कुछ रिकॉर्ड के साथ भरता है, LINQ क्वेरी का उपयोग करके उनसे जुड़ता है और उन्हें कंसोल पर आउटपुट करता है।
DataTable dt1 = new DataTable();
dt1.Columns.Add("CustID", typeof(int));
dt1.Columns.Add("ColX", typeof(int));
dt1.Columns.Add("ColY", typeof(int));
DataTable dt2 = new DataTable();
dt2.Columns.Add("CustID", typeof(int));
dt2.Columns.Add("ColZ", typeof(int));
for (int i = 1; i <= 5; i++)
{
DataRow row = dt1.NewRow();
row["CustID"] = i;
row["ColX"] = 10 + i;
row["ColY"] = 20 + i;
dt1.Rows.Add(row);
row = dt2.NewRow();
row["CustID"] = i;
row["ColZ"] = 30 + i;
dt2.Rows.Add(row);
}
var results = from table1 in dt1.AsEnumerable()
join table2 in dt2.AsEnumerable() on (int)table1["CustID"] equals (int)table2["CustID"]
select new
{
CustID = (int)table1["CustID"],
ColX = (int)table1["ColX"],
ColY = (int)table1["ColY"],
ColZ = (int)table2["ColZ"]
};
foreach (var item in results)
{
Console.WriteLine(String.Format("ID = {0}, ColX = {1}, ColY = {2}, ColZ = {3}", item.CustID, item.ColX, item.ColY, item.ColZ));
}
Console.ReadLine();
// Output:
// ID = 1, ColX = 11, ColY = 21, ColZ = 31
// ID = 2, ColX = 12, ColY = 22, ColZ = 32
// ID = 3, ColX = 13, ColY = 23, ColZ = 33
// ID = 4, ColX = 14, ColY = 24, ColZ = 34
// ID = 5, ColX = 15, ColY = 25, ColZ = 35
यह अंततः मेरे लिए काम किया, लेकिन मैं इस पर एक घंटे से अधिक खर्च किए, अपवाद "निर्दिष्ट डाली मान्य नहीं" के साथ, मेरे विवेक पर सवाल, जब तक मैं करने के लिए (int) table1 [ "मैदान"] से इसे बदल Convert.ToInt32 (table1 [ "मैदान"])। – CindyH
@ सिंडी, आपकी टिप्पणी के लिए बहुत बहुत धन्यवाद, यह मुझे समय बचाया। मुझे लगता है कि यह System.Data.DataTypes के कारण है, जहां int शामिल नहीं है, लेकिन Int32 है। यहां सभी डेटाटाइप्स की सूची: https://msdn.microsoft.com/en-us/library/system.data.datacolumn.datatype(v=vs.110).aspx – FrenkyB