সি # তে ডেটা টেবিল থেকে কলামগুলি সরান


113

আমার একটি ডেটাসেট রয়েছে যা আমি একটি ডাটা টেবিল পাই যা থেকে কোনও ফাংশন কল থেকে আমাকে ফেরত দেওয়া হচ্ছে। এটিতে 15-20 কলাম রয়েছে, তবে আমি কেবল 10 টি কলামের ডেটা চাই।

আমি চাই না সেই কলামগুলি সরিয়ে দেওয়ার কোনও উপায় আছে কি, ডেটা টেবিলটি অন্যটিতে অনুলিপি করুন যা কেবলমাত্র কলামগুলিই চাই যা আমি চাই বা এটি সংগ্রহটি পুনরুক্তি করা এবং আমার প্রয়োজনীয় কলামগুলি কেবল ব্যবহার করা আরও ভাল।

আমার মানগুলি একটি নির্দিষ্ট দৈর্ঘ্যের ডেটা ফাইলে লিখতে হবে।


আমি যে ডেটাসেটটি পেয়েছি তার উপর আমার কোনও নিয়ন্ত্রণ নেই। আমি কেবল জানি যে এটিতে সমস্ত কিছু রয়েছে।
— ব্রায়ান জি

উত্তর:


302

ব্যান্ডউইথ এবং মেমরি হ্রাস করতে নির্বাচিত কলামগুলি সীমাবদ্ধ করা বাদ দিয়ে:

DataTable t;
t.Columns.Remove("columnName");
t.Columns.RemoveAt(columnIndex);

13
শুধু নির্মল এই এছাড়াও কাজ করে DataTableইতিমধ্যে বিদ্যমান করেছে সারি, না শুধুমাত্র একটি খালি উপর DataTable।
— উয়ে কেইম

23

আপনি চান তার পরে সমস্ত কলাম সরিয়ে ফেলতে নীচের কোডটি ব্যবহার করা উচিত। এটি সূচী 10 এ সরিয়ে ফেলবে (কলামগুলি 0 ভিত্তিক মনে রাখবেন), যতক্ষণ না কলামের গণনা 10 বা তার কম হয়।

DataTable dt;
int desiredSize = 10;

while (dt.Columns.Count > desiredSize)
{
   dt.Columns.RemoveAt(desiredSize);
}

1
শুধু আমার 2 সি, আমি এই সমাধানটি পছন্দ করি না, কলাম সূচীগুলির সাথে কাজ করা দুঃস্বপ্নের রক্ষণাবেক্ষণের দিকে পরিচালিত করে ..
— রবার্তো

1
প্রশ্নটিতে নিম্নলিখিত বিবৃতিটি অন্তর্ভুক্ত রয়েছে: "..কলামগুলি সংজ্ঞায়িত করেছে যে আমি চাই .." সুতরাং এর অর্থ কলামগুলি প্রয়োজনীয় ক্রম অনুসারে ক্রমযুক্ত হয় না যাতে কেউ কেবল "আমার প্রথম 10 টি কলামের প্রয়োজন" বলতে পারে না। যেমন সমাধানটিতে অবশ্যই তিনি চান এমন কলামের নামের একটি অ্যারে থাকতে পারে, তবে আমরা এই "সংজ্ঞায়িত" নামগুলিতে না পড়ে অন্য সকলকেই নির্মূল করতে পারি। এটি বাস্তবায়নের বিভিন্ন উপায়; সাধারণ foreach লুপ থেকে জিজ্ঞাসা বা লিনক IN ব্যবহার করে।
— রবার্তো

3

প্রশ্নটি ইতিমধ্যে উত্তর হিসাবে চিহ্নিত করা হয়েছে, তবে আমি অনুমান করি যে প্রশ্নটি বলে যে ব্যক্তি একটি থেকে একাধিক কলাম সরাতে চায় DataTable।

সুতরাং যে জন্য, এখানে আমি কি করেছি, যখন আমি একই সমস্যা জুড়ে এসেছি।

string[] ColumnsToBeDeleted = { "col1", "col2", "col3", "col4" };

foreach (string ColName in ColumnsToBeDeleted)
{
    if (dt.Columns.Contains(ColName))
        dt.Columns.Remove(ColName);
}
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.