सबसे पहले मुझे ODBC से सभी डेटा प्राप्त करने की आवश्यकता है (यह पहले से ही काम कर रहा है)।
फिर सबसे जटिल हिस्सा आता है कि मुझे यकीन नहीं है कि यह कैसे किया जा सकता है। ODBC में डेटा की दो तालिकाएँ हैं। मैं उन्हें अपने वर्तमान कोड के साथ विलय कर रहा हूं और कुछ मापदंडों के साथ फ़िल्टर कर रहा हूं।
डेटाबेस में तालिका 1:
NRO NAME NAMEA NAMEB ADDRESS POSTA POSTN POSTADR COMPANYN COUNTRY ID ACTIVE
123 Fiat Punto 500 J5 K4 O3 P4 O2 JT 1 1
133 Opel Meriva FTG J5 K4 O3 P4 O2 JO 3 1
153 MB E200 C25 JN KI OP PY OR JD 5 1
183 BMW E64 SE0 JR KE OT PG OL J8 9 1
103 Audi S6 700 JP KU OU PN OH J6 11 1
डेटाबेस में तालिका 2:
NRO NAME NAMEA NAMEB ADDRESS POSTA POSTN POSTADR COMPANYN COUNTRY ID ACTIVE
423 Fiat Punto 500 J5 K4 O3 P4 O2 JT 1 1
463 BMW E64 SE0 JR KE OT PG OL J8 9 1
मर्ज किए गए डेटाटेबल इस तरह दिखते हैं:
NRO NAME NAMEA NAMEB ADDRESS POSTA POSTN POSTADR COMPANYN COUNTRY ID ACTIVE
423 Fiat Punto 500 J5 K4 O3 P4 O2 JT 1 1
463 BMW E64 SE0 JR KE OT PG OL J8 9 1
123 Fiat Punto 500 J5 K4 O3 P4 O2 JT 1 1
133 Opel Meriva FTG J5 K4 O3 P4 O2 JO 3 1
153 MB E200 C25 JN KI OP PY OR JD 5 1
183 BMW E64 SE0 JR KE OT PG OL J8 9 1
103 Audi S6 700 JP KU OU PN OH J6 11 1
हालाँकि, मर्ज किए गए आउटपुट डेटाटेबल को इस तरह दिखना चाहिए (आगे इसके साथ काम करने की संभावना है):
NRO NRO1 NAME NAMEA NAMEB ADDRESS POSTA POSTN POSTADR COMPANYN COUNTRY ID ACTIVE
123 423 Fiat Punto 500 J5 K4 O3 P4 O2 JT 1 1
133 Opel Meriva FTG J5 K4 O3 P4 O2 JO 3 1
153 MB E200 C25 JN KI OP PY OR JD 5 1
183 463 BMW E64 SE0 JR KE OT PG OL J8 9 1
103 Audi S6 700 JP KU OU PN OH J6 11 1
में डुप्लिकेट का पता लगाएं NAME
। उनमें से केवल एक को छोड़ दें, तालिका 1 NRO
से तालिका 2 से संख्या तक असाइन करें NRO1
। तालिका 1 संख्या में होना चाहिए NRO
, तालिका 2 संख्या में होना चाहिए NRO1
।
ODBC से जुड़ने के बाद मैं तालिका 1 के आंकड़ों के साथ एक तालिका भर रहा हूं
DataTable dataTable = new DataTable("COMPANY");
using (OdbcConnection dbConnectionSE = new OdbcConnection(connectionStringSE))
{
dbConnectionSE.Open();
OdbcDataAdapter dadapterSE = new OdbcDataAdapter();
dadapterSE.SelectCommand = new OdbcCommand(queryStringSE, dbConnectionSE);
dadapterSE.Fill(dataTable);
}
फिर मैं एक और तालिका 2 से डेटा प्राप्त कर रहा हूं और उनके द्वारा विलय कर रहा हूं:
using (OdbcConnection dbConnectionFI = new OdbcConnection(connectionStringFI))
{
dbConnectionFI.Open();
OdbcDataAdapter dadapterFI = new OdbcDataAdapter();
dadapterFI.SelectCommand = new OdbcCommand(queryStringFI, dbConnectionFI);
var newTable = new DataTable("COMPANY");
dadapterFI.Fill(newTable);
dataTable.Merge(newTable);
}
उसके बाद मैं फ़िल्टरिंग कर रहा हूं (मुझे केवल 4 और 1 से शुरू होने वाली पंक्तियों की आवश्यकता है NRO
, अन्य शुरुआती संख्या के साथ पंक्तियाँ भी हैं):
DataTable results = dataTable.Select("ACTIVE = '1' AND (NRO Like '1%' OR NRO Like '4%')").CopyToDataTable();
फिर मैं इसके लिए एक और कॉलम जोड़ रहा हूं NRO1
(यह शून्य भी जोड़ रहा है (0) मुझे कॉलम में उनकी आवश्यकता नहीं है NRO1
):
results.Columns.Add("NRO1", typeof(int)).SetOrdinal(1);
foreach (DataRow row in results.Rows)
{
//need to set value to NewColumn column
row["NRO1"] = 0; // or set it to some other value
}
मैं इस कोड के साथ डुप्लिकेट पकड़ सकता हूं
var duplicates = results.AsEnumerable().GroupBy(r => r[2]).Where(gr => gr.Count() > 1);
लेकिन शेष प्रदर्शन कैसे करें? यह एक नया टेबल बनाने के साथ लूप द्वारा किया जाना चाहिए? मैं डुप्लिकेट में शामिल होने और निकालने का प्रदर्शन कैसे कर सकता हूं dataTable
?
NAME
। यदि दो से अधिक - त्रुटि (त्रुटि हैंडलर)। 2. मेरे उदाहरण में एक त्रुटि थी, मैंने इसे अब ठीक कर दिया है। इस एक का उल्लेख करने के लिए धन्यवाद, यह महत्वपूर्ण है।
dataTable
किसी नाम के लिए दो से अधिक डुप्लिकेट हो सकते हैं? उदाहरण के लिए, बीएमडब्ल्यू के लिए तीन डुप्लिकेट मौजूद करना संभव है? 2. हम कैसे परिभाषित कर सकते हैं कि कौन से डुप्लिकेट रिकॉर्ड रखने के लिए, और कौन से हटाना है? उदाहरण के लिए, हम न्यूनतम के साथ रिकॉर्ड रख सकते हैंNRO
और अन्य रिकॉर्ड को हटा सकते हैं।