मुझे एक डाटाएव को एक डेटाटेबल में कॉपी करने की आवश्यकता है। ऐसा लगता है कि ऐसा करने का एकमात्र तरीका आइटम द्वारा डेटाव्यू आइटम के माध्यम से फिर से शुरू करना है और एक डेटाटेबल पर कॉपी करना है। कोई बेहतर तरीका ज़रूर होगा।सी # में डेटाटेव को डेटाटाइव की प्रतिलिपि बनाने का सबसे आसान तरीका?
13
A
उत्तर
36
dt = DataView.ToTable()
या
dt = DataView.Table.Copy()
,
या
dt = DataView.Table.Clone()
;
3
उत्तर मेरी स्थिति के लिए काम नहीं करता है क्योंकि मेरे पास अभिव्यक्तियों के साथ कॉलम हैं। DataView.ToTable()
केवल मूल्यों की प्रतिलिपि करेगा, अभिव्यक्तियों पर नहीं।
सबसे पहले मैं इस कोशिश की:
//clone the source table
DataTable filtered = dt.Clone();
//fill the clone with the filtered rows
foreach (DataRowView drv in dt.DefaultView)
{
filtered.Rows.Add(drv.Row.ItemArray);
}
dt = filtered;
लेकिन यह है कि समाधान भी सिर्फ 1000 पंक्तियों के लिए बहुत धीमी गति से किया गया था।
समाधान है कि मेरे लिए काम किया है:
//create a DataTable from the filtered DataView
DataTable filtered = dt.DefaultView.ToTable();
//loop through the columns of the source table and copy the expression to the new table
foreach (DataColumn dc in dt.Columns)
{
if (dc.Expression != "")
{
filtered.Columns[dc.ColumnName].Expression = dc.Expression;
}
}
dt = filtered;
धन्यवाद, गूगल मुझे बहुत बुरी तरह से विफल रहा था। उम्मीद है कि यह पृष्ठ अत्यधिक रैंक होगा। – Ravedave
धन्यवाद जोस .. यह काम किया ... –
नोट: 'DataView.ToTable()' केवल डेटा व्यू के मानों की प्रतिलिपि बनायेगा। 'DataView.Table.Copy()' स्रोत डेटाटेबल की प्रतिलिपि बनाएगा, डेटाव्यू के फ़िल्टर किए गए डेटा नहीं। 'DataView.Table.Clone()' केवल स्रोत डेटाटेबल की संरचना की प्रतिलिपि बनायेगा। – Homer