जवाबों:
foreach (DataRow dr in dataTable1.Rows) {
if (/* some condition */)
dataTable2.Rows.Add(dr.ItemArray);
}
उपरोक्त उदाहरण मानता है कि dataTable1
और dataTable2
स्तंभों की संख्या, प्रकार और क्रम है।
ItemArray
अभिव्यक्ति के अंत में भाग छोड़ देते हैं । सुनिश्चित करें कि आप पंक्ति के मूल्यों को जोड़ रहे हैं, न कि पंक्ति को।
DataTable.Clone
विधि के लिए MSDN प्रलेखन का संदर्भ लें : msdn.microsoft.com/en-us/library/…
तालिका से दूसरे तक निर्दिष्ट पंक्तियों की प्रतिलिपि बनाएँ
// here dttablenew is a new Table and dttableOld is table Which having the data
dttableNew = dttableOld.Clone();
foreach (DataRow drtableOld in dttableOld.Rows)
{
if (/*put some Condition */)
{
dtTableNew.ImportRow(drtableOld);
}
}
इसे इस्तेमाल करे
String matchString="ID0001"//assuming we have to find rows having key=ID0001
DataTable dtTarget = new DataTable();
dtTarget = dtSource.Clone();
DataRow[] rowsToCopy;
rowsToCopy = dtSource.Select("key='" + matchString + "'");
foreach (DataRow temp in rowsToCopy)
{
dtTarget.ImportRow(temp);
}
इसे देखें, आप इसे पसंद कर सकते हैं (पहले, कृपया, क्लोन 1 से टेबल 2 तक):
table1.AsEnumerable().Take(recodCount).CopyToDataTable(table2,LoadOption.OverwriteChanges);
या:
table1.AsEnumerable().Where ( yourcondition ) .CopyToDataTable(table2,LoadOption.OverwriteChanges);
में समर्थित: 4, 3.5 SP1, अब आप सिर्फ ऑब्जेक्ट पर एक विधि कह सकते हैं।
DataTable dataTable2 = dataTable1.Copy()
अन्य पदों के परिणामस्वरूप, यह सबसे छोटा है जो मुझे मिल सकता है:
DataTable destTable = sourceTable.Clone();
sourceTable.AsEnumerable().Where(row => /* condition */ ).ToList().ForEach(row => destTable.ImportRow(row));
sourceTable
वसीयत destTable
भी साफ कर दूं?
नीचे नमूना एक पंक्ति को कॉपी करने का सबसे तेज़ तरीका होगा। प्रत्येक सेल को कॉलम नाम के आधार पर कॉपी किया जा रहा है। अगर आपको कॉपी करने के लिए एक विशिष्ट सेल की आवश्यकता नहीं है, तो एक कोशिश पकड़ें या यदि जोड़ें। यदि आपकी 1 से अधिक पंक्ति कॉपी करने जा रही है तो नीचे दिए गए कोड को लूप करें।
DataRow dr = dataset1.Tables[0].NewRow();
for (int i = 0; i < dataset1.Tables[1].Columns.Count; i++)
{
dr[dataset1.Tables[1].Columns[i].ColumnName] = dataset1.Tables[1].Rows[0][i];
}
datasetReport.Tables[0].Rows.Add(dr);
डेटासेट 1 टेबल्स [1] .Rows [ 0 ] [i]; इंडेक्स 0 को अपने निर्दिष्ट पंक्ति इंडेक्स में बदल दें या यदि आप लूप में जा रहे हैं या यदि तार्किक होने जा रहा है तो आप एक वेरिएबल का उपयोग कर सकते हैं
जो एकल कमांड SQL क्वेरी चाहते हैं, उनके लिए:
INSERT INTO TABLE002
(COL001_MEM_ID, COL002_MEM_NAME, COL002_MEM_ADD, COL002_CREATE_USER_C, COL002_CREATE_S)
SELECT COL001_MEM_ID, COL001_MEM_NAME, COL001_MEM_ADD, COL001_CREATE_USER_C, COL001_CREATE_S
FROM TABLE001;
इस क्वेरी से डेटा कॉपी जाएगा TABLE001
करने के लिए TABLE002
और हम मानते हैं कि दोनों स्तंभ अलग स्तंभ नाम था।
कॉलम नामों को एक-से-एक मैप किया जाता है जैसे:
COL001_MEM_ID -> COL001_MEM_ID
COL001_MEM_NAME -> COL002_MEM_NAME
COL001_MEM_ADD -> COL002_MEM_ADD
COL001_CREATE_USER_C -> COL002_CREATE_USER_C
COL002_CREATE_S -> COL002_CREATE_S
आप यह भी निर्दिष्ट कर सकते हैं कि कहां क्लॉज है, अगर आपको कुछ शर्त की आवश्यकता है।
पूरी तरह से व्यावहारिक प्रतिलिपि बनाने के लिए बस ऐसा करें
DataGridView sourceGrid = this.dataGridView1;
DataGridView targetGrid = this.dataGridView2;
targetGrid.DataSource = sourceGrid.DataSource;