मैं एक समाधान है जो कॉलम के माध्यम से पाशन पर निर्भर नहीं करता पाया: या आप सिर्फ इस तरह प्रत्येक पंक्ति में आइटम, के माध्यम से लूप सकता है।
यह 'मर्ज' विधि का उपयोग करता है, जिसे मैंने पहले खारिज कर दिया था क्योंकि मैंने सोचा था कि दोनों टेबलों को एक ही संरचना की आवश्यकता है। जोड़ा जा सकता है
// set primary key
T1.PrimaryKey = new DataColumn[] { T1.Columns["DateStamp"] };
T2.PrimaryKey = new DataColumn[] { T2.Columns["DateStamp"] };
फिर एक डेटा-सेट तो एक रिश्ता करने के लिए दोनों तालिकाओं जोड़ें::
// add both data-tables to data-set
DataSet dsContainer = new DataSet();
dsContainer.Tables.Add(T1);
dsContainer.Tables.Add(T2);
अगला
सबसे पहले आपको दो डेटा-टेबल पर एक प्राथमिक कुंजी बनाने की जरूरत डेटा-सेट में दो प्रमुख कॉलम के बीच संबंध जोड़ें:
// add a relationship between the two timestamp columns
DataRelation relDateStamp = new DataRelation("Date", new DataColumn[] { T1.Columns["DateStamp"] }, new DataColumn[] { T2.Columns["DateStamp"] });
dsContainer.Relations.Add(relDateStamp);
अंत में आप पहले कॉपी कर सकते हैं एक नए 'संयुक्त' संस्करण में डेटा की मेज, और फिर दूसरे में विलय:
// populate combined data
DataTable dtCombined = new DataTable();
dtCombined = T1.Copy();
dtCombined.Merge(T2, false, MissingSchemaAction.Add);
नोट: मर्ज विधि दूसरा तर्क वरना आवश्यकता है गलत यह प्रतियां संरचना लेकिन दूसरे की नहीं डेटा तालिका।एक संयुक्त संस्करण प्राथमिक कुंजी के आधार पर में
T1 (2012-05-09, 111, 222)
T2 (2012-05-09, 333, 444, 555)
:
यह तो गठबंधन होगा निम्न तालिकाओं
J1 (2012-05-09, 111, 222, 333, 444, 555)
क्या आप "linq" का उपयोग कर सकते हैं? –
क्या आप कुछ डेटा का उदाहरण दे सकते हैं जो परिणाम आप चाहते हैं? –
मुझे नहीं लगता कि लिंक एक विकल्प है क्योंकि आपको उस कॉलम नामों को जानना होगा जिन्हें आप प्रोजेक्ट करने का प्रयास कर रहे थे। – finoutlook