मैं एक DataRow
सरणी को रूपांतरित करना चाहता हूं DataTable
... ऐसा करने का सबसे सरल तरीका क्या है?
मैं एक DataRow
सरणी को रूपांतरित करना चाहता हूं DataTable
... ऐसा करने का सबसे सरल तरीका क्या है?
जवाबों:
क्यों अपने DataRow सरणी के माध्यम से पुनरावृत्ति न करें और (DataRow.ImportRow का उपयोग करके, यदि आवश्यक हो, तो DataRow की एक प्रति प्राप्त करने के लिए), कुछ इस तरह से:
foreach (DataRow row in rowArray) {
dataTable.ImportRow(row);
}
सुनिश्चित करें कि आपके डेटाटेबल के पास आपके DataRow एरे में DataRows के समान स्कीमा है।
rowArray.CopyToDataTable();
क्योंकि यह टेबल स्कीमा रखता है और इसे नए टेबल ऑब्जेक्ट के साथ प्रतिस्थापित नहीं कर रहा है!
.Net फ्रेमवर्क 3.5+ के लिए
DataTable dt = new DataTable();
DataRow[] dr = dt.Select("Your string");
DataTable dt1 = dr.CopyToDataTable();
लेकिन अगर सरणी में कोई पंक्तियाँ नहीं हैं, तो यह त्रुटियों का कारण बन सकता है जैसे कि स्रोत में कोई DataRows नहीं है । इसलिए, यदि आप इस पद्धति का उपयोग करने का निर्णय लेते हैं, तो आपको CopyToDataTable()
यह जानने के लिए सरणी की जांच करनी चाहिए कि उसमें डेटा है या नहीं।
if (dr.Length > 0)
DataTable dt1 = dr.CopyToDataTable();
MSDN पर उपलब्ध संदर्भ: DataTableExtensions.CopyToDataTable Method (IEnumerable)
copyToDataTable()
? मैंने इसे .net 2.0 में नहीं पाया
copyToDataTable()
विधि चयनित पंक्तियों के स्तंभों की एक परिपूर्ण प्रतिलिपि बनाता है, जबकि datatable.ImportRow(row)
विधि doesn't
DataTable dt = new DataTable();
DataRow[] dr = (DataTable)dsData.Tables[0].Select("Some Criteria");
dt.Rows.Add(dr);
Input array is longer than the number of columns in this table.
"। वर्जन-क्लोन संस्करण त्रुटि के साथ: " Unable to cast object of type 'System.Data.DataRow' to type 'System.IConvertible'.Couldn't store <System.Data.DataRow> in StoreOrder Column. Expected type is Int64.
" नोट: StoreOrder
टेबल स्कीमा का पहला कॉलम है। लगता है यह है कि पहले कॉलम में जाम पूरे DataRow की कोशिश कर रही
एक अन्य तरीका एक DataView का उपयोग करना है
// Create a DataTable
DataTable table = new DataTable()
...
// Filter and Sort expressions
string expression = "[Birth Year] >= 1983";
string sortOrder = "[Birth Year] ASC";
// Create a DataView using the table as its source and the filter and sort expressions
DataView dv = new DataView(table, expression, sortOrder, DataViewRowState.CurrentRows);
// Convert the DataView to a DataTable
DataTable new_table = dv.ToTable("NewTableName");
सरल तरीका है:
// dtData is DataTable that contain data
DataTable dt = dtData.Select("Condition=1").CopyToDataTable();
// or existing typed DataTable dt
dt.Merge(dtData.Select("Condition=1").CopyToDataTable());
DataTable dt = new DataTable();
foreach (DataRow dr in drResults)
{
dt.ImportRow(dr);
}
DataTable Assetdaterow =
(
from s in dtResourceTable.AsEnumerable()
where s.Field<DateTime>("Date") == Convert.ToDateTime(AssetDate)
select s
).CopyToDataTable();
.Net 3.5+ ने DataTableExtensions को जोड़ा, DataTableExtensions.CopyToDataTable मेथड का उपयोग करें
Datarow array के लिए बस .CopyToDataTable () का उपयोग करें और यह वापस लाने योग्य हो जाएगा।
एकल datarow उपयोग के लिए
new DataRow[] { myDataRow }.CopyToDataTable()
किसी को भी VB.NET में इसकी आवश्यकता है:
Dim dataRow as DataRow
Dim yourNewDataTable as new datatable
For Each dataRow In yourArray
yourNewDataTable.ImportRow(dataRow)
Next
DataTable dataTable = new DataTable();
dataTable = OldDataTable.Tables[0].Clone();
foreach(DataRow dr in RowData.Tables[0].Rows)
{
DataRow AddNewRow = dataTable.AddNewRow();
AddNewRow.ItemArray = dr.ItemArray;
dataTable.Rows.Add(AddNewRow);
}
DataTable dataTable = new DataTable(); dataTable.ImportRow(dataRow); MyControl.DataSource = dataTable;