ড্যাটারো অ্যারেটিকে ডেটেবলে রূপান্তর করার সহজ উপায়


উত্তর:


92

আপনার ডেটাআর অ্যারের মাধ্যমে কেন পুনরুক্তি হবে না এবং যুক্ত করুন (DataRow.ImportRow ব্যবহার করে, প্রয়োজন হলে, DataRow এর একটি অনুলিপি পেতে), এর মতো কিছু:

foreach (DataRow row in rowArray) {
   dataTable.ImportRow(row);
}

আপনার ডেটাট্যাবেল আপনার ডেটাআর অ্যারেতে ডেটা রো হিসাবে একই স্কিমা রয়েছে তা নিশ্চিত করুন।


4
এই কৌশলটি সহায়ক যদি আপনি ত্রুটি বার্তাটি পান "মাইকন্ট্রোলের জন্য একটি অবৈধ ডেটা উত্স ব্যবহার করা হচ্ছে। কোনও নিয়ন্ত্রণের ডেটাসোর্স সম্পত্তিটিতে কোনও ডাটাআরো বাঁধার চেষ্টা করার সময় একটি বৈধ ডেটা উত্স অবশ্যই আইলিস্টোর্স বা আইয়ুনামেবল" প্রয়োগ করতে হবে। এটি কীভাবে করবেন তা এখানে:DataTable dataTable = new DataTable(); dataTable.ImportRow(dataRow); MyControl.DataSource = dataTable;
হাম্বাদগুলি

+1 এর চেয়ে আমি এটিকে পছন্দ করি rowArray.CopyToDataTable();কারণ এটি টেবিল স্কিমা রাখে এবং এটি নতুন টেবিল বস্তুর সাথে প্রতিস্থাপন করছে না!
মোজতাবা রেজাianীয়

7
খুব ভালো ! তবে আমি ভবিষ্যতের পূর্বে ডেটা টেবিলটি ক্লোন করার পরামর্শ দেব। এটি ডেটা টেবিলের বিন্যাসটি অনুলিপি করে: newDataTable = oldDataTable.clone ();
হুইপল্যাশ

4
ইঙ্গিত: আপনার ডেটাতেবলের অবশ্যই কলাম তৈরি করা উচিত বা এটি সঠিকভাবে পূরণ করবে না।
লজিকোলজিস্ট

193

নেট ফ্রেমওয়ার্ক 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();

এমএসডিএন-তে উপলব্ধ রেফারেন্স: ডেটাবেল এক্সটেনশনস op কপি টোডেটা টেবিল পদ্ধতি (আইনিউনারেবল)


4
কোথা থেকে পেলেন copyToDataTable()? আমি এটি নেট। 2.0 তে খুঁজে
পাইনি

11
এটি সঠিক উত্তর হিসাবে চিহ্নিত করা উচিত কারণ copyToDataTable()পদ্ধতিটি নির্বাচিত সারিগুলির কলামগুলির একটি নিখুঁত অনুলিপি তৈরি করে, যদিও datatable.ImportRow(row)পদ্ধতিটি না করে
ড্যান্ট

4
এই পদ্ধতিটি ভাল নয় যদি টেবিলটিতে ইতিমধ্যে সারি থাকে তবে এটি ইতিমধ্যে যা আছে তা প্রতিস্থাপন করে। খালি টেবিল যদি এটি শুরু হয় ঠিক আছে।
ফ্রাঙ্ক

4
যতক্ষণ না। নেট ফাংশন অনুকূলিত হয় আমি এই পদ্ধতিটি পছন্দ করি prefer আপনার প্রকল্পে সিস্টেম.ডাটা.ডাটাসেট এক্সটেনশনগুলিতে রেফারেন্স যুক্ত করতে ভুলবেন না যাতে এই পদ্ধতিটি কেন (আমার মতো) অনুপস্থিত তা নিজেকে জিজ্ঞাসা করতে আপনি হতাশ হবেন না
ব্রোকেন_উইন্ডো

তথ্যসূত্র মধ্যে System.Data.DataSetExtensions পরিষদের যোগ করার জন্য মনে রাখুন
Vagner Gon

12
DataTable dt = new DataTable(); 

DataRow[] dr = (DataTable)dsData.Tables[0].Select("Some Criteria");

dt.Rows.Add(dr);

4
আমি এর আগেই এরকম চেষ্টা করেছি .. "ত্রুটিটি এমন কিছু ঘটে যেমন" ইনপুট অ্যারে এই টেবিলের কলামগুলির সংখ্যার চেয়ে দীর্ঘ ""
বিকাশকারী

এএস জে উল্লেখ করেছেন, নিশ্চিত করুন যে আপনার ডেটা টেবিলের আপনার ডেটারো অ্যারেতে ডেটা-র মতো একই স্কিমা রয়েছে
মিচ গম

4
হ্যাঁ .. আমি চেষ্টা করেছিলাম। আমি ডেটাটেবল 1 ব্যবহার করেছি = ডেটাটেবল 2.ক্লোন (); এখন এটি কাজ করছে ... আপনাকে ধন্যবাদ :-)
বিকাশকারী

আমি এটি একটি সারির অ্যারে দিয়ে চেষ্টা করেছি এবং এটি কার্যকর হয়নি। সারি অ্যারেতে প্রতিটি সারির জন্য, আমি একটি নতুন সারি তৈরি করেছি, মূল সারি থেকে আইটেমআরে সম্পত্তি অনুলিপি করেছি এবং তারপরে অ্যাডটি কাজ করেছে।
স্টিভ 14

4
এটি পোস্ট করা নমুনার সাথে। নেট ফ্রেমওয়ার্ক 4.0 এ কাজ করবে বলে মনে হচ্ছে না, বা dstata.tables [0] থেকে "ডিটি" ক্লোন করা হচ্ছে না। @ জো এর উত্তর আমার উদ্দেশ্য কাজ করে। কোনও ক্লোন সংস্করণ ত্রুটি: " 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সারণি স্কিমাতে প্রথম কলাম। দেখে মনে হচ্ছে এটি পুরো কাতালিকে প্রথম কলামটিতে জ্যাম করার চেষ্টা করছে
ব্রায়ান ওয়েবস্টার

11

আরেকটি উপায় হ'ল ডেটাভিউ ব্যবহার করা

// 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");

10

সহজ উপায়:

// 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());




4

.Net 3.5+ ডেটা টেবিল এক্সটেনশনগুলি যুক্ত করেছে, ডেটাটেবল এক্সটেনশনগুলি ব্যবহার করুন op কপি টোডেটা টেবিল পদ্ধতি

ড্যাটারো অ্যারের জন্য কেবল ব্যবহার করুন। কপিটোডেটা টেবিল () এবং এটি ডেটেবল যোগ্য হবে।

একক দাতার ব্যবহারের জন্য

new DataRow[] { myDataRow }.CopyToDataTable()

2

সমাধান এখানে। এটা ঠিক কাজ করা উচিত।

DataTable dt = new DataTable();
dt = dsData.Tables[0].Clone();
DataRows[] drResults = dsData.Tables[0].Select("ColName = 'criteria');

foreach(DataRow dr in drResults)
{
    object[] row = dr.ItemArray;
    dt.Rows.Add(row);
} 

1

ভিবি.এনইটি-তে যে কারওর প্রয়োজন আছে তা অন্তর্ভুক্ত করুন:

Dim dataRow as DataRow
Dim yourNewDataTable as new datatable
For Each dataRow In yourArray
     yourNewDataTable.ImportRow(dataRow)
Next

1

আপনি System.Linq এর মতো ব্যবহার করতে পারেন:

if (dataRows != null && dataRows.Length > 0)
{
   dataTable = dataRows.AsEnumerable().CopyToDataTable();
}

1

আপনাকে প্রথমে ডেটা টেবিলের কাঠামো ক্লোন করতে হবে তারপরে লুপের সাহায্যে সারিগুলি আমদানি করতে হবে

DataTable dataTable =dtExisting.Clone();
foreach (DataRow row in rowArray) {
   dataTable.ImportRow(row);
}

0
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);
}
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.