(লিনকিউ / প্রেডিকেট) ব্যবহার করে স্ট্রিং অ্যারেতে ডেটাবেলের সমস্ত কলামের নাম পান


107

আমি জানি আমরা একটি সহজ লুপ দ্বারা এটি সহজেই করতে পারি, তবে আমি এই লিনকিউ / ভবিষ্যদ্বাণীকে অনুধাবন করতে চাই?

string[] columnNames = dt.Columns.?

or

string[] columnNames = from DataColumn dc in dt.Columns select dc.name;

উত্তর:


220

এটি চেষ্টা করুন (লিনকু পদ্ধতি সিনট্যাক্স):

string[] columnNames = dt.Columns.Cast<DataColumn>()
                                 .Select(x => x.ColumnName)
                                 .ToArray();  

বা লিনকিউ ক্যোয়ারির বাক্য গঠনতে:

string[] columnNames = (from dc in dt.Columns.Cast<DataColumn>()
                        select dc.ColumnName).ToArray();

Castপ্রয়োজনীয়, কারণ কলামগুলি ডেটা কলাম সংগ্রহের টাইপের যা একটি IEnumerable, নয় IEnumerable<DataColumn>। অন্যান্য অংশগুলি সুস্পষ্ট হওয়া উচিত।


আমি লিনক / লামদা প্রাক্তন একজন নবাগত। এটি দেখতে ভাল লাগছে। আরও একটি প্রশ্ন, আমি কীভাবে 1 লামদা এক্সপ্রেশনটিতে ঘনত্ব (যেখানে ডিসি। কলামনাম! = "এবিসি") রাখতে পারি? লিঙ্কে আমি যেখানে ব্যবহার করতে পারি।
ললিত

ঠিক string[] columnNames = dt.Columns.Cast<DataColumn>().Where(x => x.ColumnName != "ABC").Select(x => x.ColumnName).ToArray();
এটির

1
@ টিজ: দয়া করে এটি একটি নতুন প্রশ্ন হিসাবে পোস্ট করুন এবং আপনার কোডের বিশদটি অন্তর্ভুক্ত করুন। তবে মূলত: একটি ডেটাগ্রিড ডেটা টেবিলের মতো নয়।
ড্যানিয়েল হিলগারথ

3
@ ফ্লিকার: বিকাশকারী হিসাবে এখনও কিছু চিন্তাভাবনা প্রয়োজন। আপনার মস্তিষ্ক আছে এটা ব্যবহার করো.
ড্যানিয়েল হিলগারথ

1
আহ ভালো. শুধু ভোট দেখুন। স্পষ্টতই, সমস্যাটি আপনার সাথে, কোডের সাথে নয়। অন্য কোথাও
ট্রোল

17

ব্যবহার

var arrayNames = (from DataColumn x in dt.Columns
                  select x.ColumnName).ToArray();

1
আমার শেষের দিকে, এটি দুটি ব্যতিক্রম ছোঁড়ে: ডেটা কলাম সংকলন থেকে এনিউরেবল রোল কালেকশন থেকে রূপান্তর করতে পারে না এবং ডেটা কলাম সংকলনে কাস্টের সংজ্ঞা নেই contain

4
@ জনের আমি মনে করি আপনি 'সিস্টেম.লিনক ব্যবহার করে যুক্ত করতে ভুলে গেছেন; আপনার ব্যবহারের জন্য আমি কেবল আমার কোডটি পরীক্ষা করেছি এবং 'সিস্টেম.লিনক ব্যবহার করার সময় আপনি যে ব্যতিক্রমগুলি উল্লেখ করেছেন সেগুলি পেয়েছি; নেই।
সেম ভ্যানমেনীন

ডোহ! আপনি বেশ সঠিক; মজার বিষয়, এই usingবিবৃতিটি স্বয়ংক্রিয়ভাবে প্রায়শই যুক্ত হয়ে যায়, এটির পরীক্ষা করার জন্য এটি আমার কাছে কখনও ঘটেনি।

4

আমি এই জাতীয় এক্সটেনশন পদ্ধতিটি ব্যবহার করার পরামর্শ দেব:

public static class DataColumnCollectionExtensions
{
    public static IEnumerable<DataColumn> AsEnumerable(this DataColumnCollection source)
    {
        return source.Cast<DataColumn>();
    }
}

এবং সেইজন্য:

string[] columnNames = dataTable.Columns.AsEnumerable().Select(column => column.Name).ToArray();

DataTableকোড হ্রাস করার জন্য আপনি ক্লাসের জন্য আরও একটি এক্সটেনশন পদ্ধতি প্রয়োগ করতে পারেন :

public static class DataTableExtensions
{
    public static IEnumerable<DataColumn> GetColumns(this DataTable source)
    {
        return source.Columns.AsEnumerable();
    }
}

এবং এটি নিম্নলিখিত হিসাবে ব্যবহার করুন:

string[] columnNames = dataTable.GetColumns().Select(column => column.Name).ToArray();

0
List<String> lsColumns = new List<string>();

if(dt.Rows.Count>0)
{
    var count = dt.Rows[0].Table.Columns.Count;

    for (int i = 0; i < count;i++ )
    {
        lsColumns.Add(Convert.ToString(dt.Rows[0][i]));
    }
}
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.