আপনি কীভাবে একটি ডেটা টেবিলকে জেনেরিক তালিকায় রূপান্তর করবেন?


184

বর্তমানে, আমি ব্যবহার করছি:

DataTable dt = CreateDataTableInSomeWay();

List<DataRow> list = new List<DataRow>(); 
foreach (DataRow dr in dt.Rows)
{
    list.Add(dr);
}

আরও ভাল / যাদু উপায় আছে?


2
আপনি এমন একটি তালিকা কী অর্জন করতে চাইছেন যা আপনি আপনার ডেটারোলকোলকেশনটি করতে পারবেন না?
জেসন কেলে

আমার দেরি হলেও আশা কাজে লাগবে। ওয়ার্কিং সমাধান .. stackoverflow.com/a/58607820/9048996
Thameem

উত্তর:


275

আপনি যদি নেট .৩.৫ ব্যবহার করছেন তবে আপনি ব্যবহার করতে পারেন DataTableExtensions.AsEnumerable(একটি এক্সটেনশন পদ্ধতি) এবং তারপরে যদি আপনার সত্যিকারের প্রয়োজন List<DataRow>হয় তবে কেবল IEnumerable<DataRow>কল করতে পারেন Enumerable.ToList:

IEnumerable<DataRow> sequence = dt.AsEnumerable();

অথবা

using System.Linq;
...
List<DataRow> list = dt.AsEnumerable().ToList();

কীভাবে এটি listজসন-এ রূপান্তর করবেন।
এসিপি

6
@ পান্ডিয়া: নেটগুলিকে জেএসএনে রূপান্তর করার বিভিন্ন উপায় রয়েছে are ব্যক্তিগতভাবে আমি সবসময় JSON.NET লাইব্রেরি ব্যবহার করেছি, তবে অন্যান্য পদ্ধতিও রয়েছে।
জন স্কিটে


1
@ জোন স্কিকেট: আমি ডেটারোতে মান পেতে চাই। কোন পদ্ধতি আছে? তালিকার মতো হওয়ার পরিবর্তে আইটেমআরে [0]।
রমেশ দুরাই

@ জোন, এফওয়াইআই: dt.AsEnumerable ()। ToList () 'System.Data.EumeumeRow Colલેક્શન <System.Data.DataRow>' তে 'টোলিস্ট' এর সংজ্ঞা নেই
প্রদীপ

66
List<Employee> emp = new List<Employee>();

//Maintaining DataTable on ViewState
//For Demo only

DataTable dt = ViewState["CurrentEmp"] as DataTable;

//read data from DataTable 
//using lamdaexpression


emp = (from DataRow row in dt.Rows

   select new Employee
   {
       _FirstName = row["FirstName"].ToString(),
       _LastName = row["Last_Name"].ToString()

   }).ToList();

উপরের কোডে বিসিএস কাজ নাও করতে পারে। dt.Rows 'AsEnumerable' প্রয়োগ করেনি। এটি নীচের হিসাবে সংশোধন করা যেতে পারে: এমপি = (তারিখের ডাটাআর সারি থেকে। গণনাযোগ্য () নতুন কর্মচারী select _ প্রথম নাম = সারিতে ["প্রথম নাম"] নির্বাচন করুন। .তালিকা();
নবীন পণ্ডিত

37

সি # 3.0 এবং সিস্টেম.ডাটা.ডাটাসেট এক্সটেনশনস.ডিল সহ,

List<DataRow> rows = table.Rows.Cast<DataRow>().ToList();

3
এটি করার ফলে 50% সময়ের মধ্যে একটি ডেটারোর উপরে ভবিষ্যদ্বাণী ব্যবহার করা পারফরম্যান্সকে সহায়তা করেছে।
লোয়েডম

33

আপনি ব্যবহার করতে পারেন

List<DataRow> list = new List<DataRow>(dt.Select());

dt.Select()আপনার টেবিলের সমস্ত সারি, ডাতারোর অ্যারে হিসাবে ফিরিয়ে দেবে, এবং নির্ধারক Listআপনার তালিকাটি প্রাথমিকভাবে পূরণ করার জন্য আর্গুমেন্ট হিসাবে সেই বস্তুর অ্যারে গ্রহণ করে।


নির্বাচন করুন () কোনও প্যারামিটারের প্রয়োজন নেই। প্যারামিটারলেস ওভারলোড সমস্ত সারি ফিরিয়ে দেয়।
কন

ধন্যবাদ, আপনার উত্তরসূচি ফিট করার জন্য আমার উত্তরটি সামঞ্জস্য করুন
কিব্বি

15

আপনি এই হিসাবে একটি এক্সটেনশন ফাংশন তৈরি করতে পারেন:

public static List<T> ToListof<T>(this DataTable dt)
{
    const BindingFlags flags = BindingFlags.Public | BindingFlags.Instance;
    var columnNames = dt.Columns.Cast<DataColumn>()
        .Select(c => c.ColumnName)
        .ToList();
    var objectProperties = typeof(T).GetProperties(flags);
    var targetList = dt.AsEnumerable().Select(dataRow =>
    {
        var instanceOfT = Activator.CreateInstance<T>();

        foreach (var properties in objectProperties.Where(properties => columnNames.Contains(properties.Name) && dataRow[properties.Name] != DBNull.Value))
        {
            properties.SetValue(instanceOfT, dataRow[properties.Name], null);
        }
        return instanceOfT;
    }).ToList();

    return targetList;
}


var output = yourDataInstance.ToListof<targetModelType>();

কাজ করে না - ডটনেটফিডাল.এন / আই 22 রি 2 সি দেখুন এটিও লক্ষ করা উচিত যে প্রতিবিম্বটি ব্যবহার করা ধীর এবং পারফরম্যান্সের সমালোচনামূলক কোডে পুনরায় প্রাপ্ত নয়।
অ্যালামন

কলামগুলির জন্য আপনাকে ডেটা ধরণের তথ্য যুক্ত করতে হবে। ডেটাটেবল dt = নতুন ডেটা টেবিল (); ডিটি.কলামস.এড করুন ("আইডি", টাইপফ (ইন্টার 32)); dt.Columns.Add ( "নাম", typeof (STRING)); তারিখ.কলামগুলি. যুক্ত করুন ("foo", টাইপফ (তারিখের সময়)); (অন্তর্নিহিত i = 0; i <= 1000; i ++) {d..Rows.Ad (i, "foo", তারিখটাইম। এখন) যোগ করুন;}
রাহুল গার্গ

এখন কাজ করে। ধন্যবাদ।
Almenon

14

আপনি যদি কেবল "আইডি" ইন্ট ফিল্ড থেকে মানগুলির একটি তালিকা ফিরে চান তবে আপনি ব্যবহার করতে পারেন ...

List<int> ids = (from row in dt.AsEnumerable() select Convert.ToInt32(row["ID"])).ToList();

12

আমি এই উত্তর ( https://stackoverflow.com/a/24588210/4489664 ) থেকে কোডে কিছু সংশোধন করেছি কারণ অযোগ্য প্রকারের জন্য এটি ব্যতিক্রম ফিরে আসবে

public static List<T> DataTableToList<T>(this DataTable table) where T: new()
{
    List<T> list = new List<T>();
    var typeProperties = typeof(T).GetProperties().Select(propertyInfo => new
        {
            PropertyInfo = propertyInfo,
            Type = Nullable.GetUnderlyingType(propertyInfo.PropertyType) ?? propertyInfo.PropertyType
        }).ToList();

    foreach (var row in table.Rows.Cast<DataRow>())
    {
        T obj = new T();
        foreach (var typeProperty in typeProperties)
        {
            object value = row[typeProperty.PropertyInfo.Name];
            object safeValue = value == null || DBNull.Value.Equals(value)
                ? null
                : Convert.ChangeType(value, typeProperty.Type);

            typeProperty.PropertyInfo.SetValue(obj, safeValue, null);
        }
        list.Add(obj);
    }
    return list;
}

আমি ক্লাসটি সরিয়েছি কারণ এটি স্ট্রাক্টের সাথেও কাজ করতে পারে।
মিকি পার্লস্টাইন

এটি বেশ ভাল কাজ করে, ভাল কাজ। যদি কেউ কোডটি নিয়ে ঘুরে দেখতে চান তবে আমি এই লিঙ্কটিতে একটি নেট নেট তৈরি করেছি: dotnetfiddle.net/mTKevy
Almenon

@ অ্যালামন আমি ছোট্ট পরিবর্তন সংযোজন করেছি, এতে কিছুটা পারফরম্যান্স বাড়ানো উচিত
বন্ডারিয়াক ভ্লাদিমির

11
using System.Data;


var myEnumerable = myDataTable.AsEnumerable();

List<MyClass> myClassList =
    (from item in myEnumerable
     select new MyClass{
         MyClassProperty1 = item.Field<string>("DataTableColumnName1"),
         MyClassProperty2 = item.Field<string>("DataTableColumnName2")
    }).ToList();

উজ্জ্বল! আপনি আমার দিনটি বাঁচিয়েছেন
অ্যানিয়মস খান


4

এখানে একটি ডেটা টেবিল এক্সটেনশন পদ্ধতি যা একটি ডেটা টেবিলকে জেনেরিক তালিকায় রূপান্তর করে।

https://gist.github.com/gaui/a0a615029f1327296cf8

ব্যবহার:

List<Employee> emp = dtTable.DataTableToList<Employee>();

4

আরও একটি 'যাদু' উপায়, এবং .NET 3.5 প্রয়োজন নেই।

উদাহরণস্বরূপ, যদি DBDatatableগাইডের একক কলামটি ফিরে আসছিল (এসকিউএল-এর অনন্য পরিচয়কারী) তবে আপনি ব্যবহার করতে পারেন:

Dim gList As New List(Of Guid)
gList.AddRange(DirectCast(DBDataTable.Select(), IEnumerable(Of Guid)))

4
// this is better suited for expensive object creation/initialization
IEnumerable<Employee> ParseEmployeeTable(DataTable dtEmployees)
{
    var employees = new ConcurrentBag<Employee>();

    Parallel.ForEach(dtEmployees.AsEnumerable(), (dr) =>
    {
        employees.Add(new Employee() 
        {
            _FirstName = dr["FirstName"].ToString(),
            _LastName = dr["Last_Name"].ToString()
        });
    });

    return employees;
}

3

DataTable.Select() সারিগুলি ডেটিয়েটেলে উপস্থিত থাকার সাথে ক্রম দেয় না।

যদি অর্ডারটি গুরুত্বপূর্ণ হয় তবে আমি ডেটারো সংগ্রহের মাধ্যমে পুনরাবৃত্তি অনুভব করব এবং একটি তালিকা তৈরি করাই সঠিক উপায় বা আপনি ওভারলোডও ব্যবহার করতে পারেন DataTable.Select(string filterexpression, string sort)

তবে এই ওভারলোডটি এসকিউএল সরবরাহ করে এমন সমস্ত ক্রম (যেমন আদেশের মাধ্যমে ...) পরিচালনা করতে পারে না।


3
DataTable dt;   // datatable should contains datacolumns with Id,Name

List<Employee> employeeList=new List<Employee>();  // Employee should contain  EmployeeId, EmployeeName as properties

foreach (DataRow dr in dt.Rows)
{
    employeeList.Add(new Employee{EmployeeId=dr.Id,EmplooyeeName=dr.Name});
}

1

System.Dataনেমস্পেস ব্যবহার করুন তবে আপনি পাবেন .AsEnumerable()


1
        /* This is a generic method that will convert any type of DataTable to a List 
         * 
         * 
         * Example :    List< Student > studentDetails = new List< Student >();  
         *              studentDetails = ConvertDataTable< Student >(dt);  
         *
         * Warning : In this case the DataTable column's name and class property name
         *           should be the same otherwise this function will not work properly
         */

নীচে দুটি ফাংশন রয়েছে যার মধ্যে আমরা যদি ডেটা টেবিল এবং ব্যবহারকারীর সংজ্ঞায়িত শ্রেণি পাস করি। এটি তখন ডাটাবেল ডেটা সহ সেই শ্রেণীর তালিকা ফিরিয়ে দেবে।

        public static List<T> ConvertDataTable<T>(DataTable dt)
        {
            List<T> data = new List<T>();
            foreach (DataRow row in dt.Rows)
            {
                T item = GetItem<T>(row);
                data.Add(item);
            }
            return data;
        }


        private static T GetItem<T>(DataRow dr)
        {
            Type temp = typeof(T);
            T obj = Activator.CreateInstance<T>();

            foreach (DataColumn column in dr.Table.Columns)
            {
                foreach (PropertyInfo pro in temp.GetProperties())
                {
                   //in case you have a enum/GUID datatype in your model
                   //We will check field's dataType, and convert the value in it.
                    if (pro.Name == column.ColumnName){                
                    try
                    {
                        var convertedValue = GetValueByDataType(pro.PropertyType, dr[column.ColumnName]);
                        pro.SetValue(obj, convertedValue, null);
                    }
                    catch (Exception e)
                    {         
                       //ex handle code                   
                        throw;
                    }
                        //pro.SetValue(obj, dr[column.ColumnName], null);
                }
                    else
                        continue;
                }
            }
            return obj;
        }

এই পদ্ধতিটি ক্ষেত্রের ডেটাটাইপ চেক করবে এবং ডেটাটাইপটিতে ডেটা টেবিল মানকে রূপান্তর করবে।

    private static object GetValueByDataType(Type propertyType, object o)
    {
        if (o.ToString() == "null")
        {
            return null;
        }
        if (propertyType == (typeof(Guid)) || propertyType == typeof(Guid?))
        {
            return Guid.Parse(o.ToString());
        }
        else if (propertyType == typeof(int) || propertyType.IsEnum) 
        {
            return Convert.ToInt32(o);
        }
        else if (propertyType == typeof(decimal) )
        {
            return Convert.ToDecimal(o);
        }
        else if (propertyType == typeof(long))
        {
            return Convert.ToInt64(o);
        }
        else if (propertyType == typeof(bool) || propertyType == typeof(bool?))
        {
            return Convert.ToBoolean(o);
        }
        else if (propertyType == typeof(DateTime) || propertyType == typeof(DateTime?))
        {
            return Convert.ToDateTime(o);
        }
        return o.ToString();
    }

পূর্ববর্তী পদ্ধতিটি কল করতে, নিম্নলিখিত সিনট্যাক্সটি ব্যবহার করুন:

List< Student > studentDetails = new List< Student >();  
studentDetails = ConvertDataTable< Student >(dt); 

আপনার প্রয়োজনীয়তার উপর ভিত্তি করে শিক্ষার্থীর শ্রেণীর নাম এবং ডিটি মান পরিবর্তন করুন। এই ক্ষেত্রে ডেটাটেবল কলামের নাম এবং শ্রেণীর সম্পত্তির নাম একই হওয়া উচিত অন্যথায় এই ফাংশনটি সঠিকভাবে কাজ করবে না।


1
আপনার উত্তরের জন্য ধন্যবাদ. আপনি যদি আপনার কোডটিতে একটি সংক্ষিপ্ত ব্যাখ্যা এবং কয়েকটি মন্তব্য যুক্ত করেন তবে দুর্দান্ত হবে। এটি আপনার উত্তর আরও ভালভাবে বুঝতে লোককে সহায়তা করে।
আন্দ্রে হাফমিস্টার

0

এটি আমার জন্য কাজ করেছে: কমপক্ষে। নেট ফ্রেমওয়ার্ক 3.5 প্রয়োজন, নীচের কোডগুলি ডাটাআরও জেনেরিকে পরিণত হয়েছে I

using System.Linq;

DataTable dt = new DataTable();            
dt = myClass.myMethod();                 
List<object> list = (from row in dt.AsEnumerable() select (row["name"])).ToList();
comboBox1.DataSource = list;

0

আউটপুট

public class ModelUser
{
    #region Model

    private string _username;
    private string _userpassword;
    private string _useremail;
    private int _userid;

    /// <summary>
    /// 
    /// </summary>
    public int userid
    {
        set { _userid = value; }
        get { return _userid; }
    }


    /// <summary>
    /// 
    /// </summary>

    public string username
    {
        set { _username = value; }
        get { return _username; }
    }

    /// <summary>
    /// 
    /// </summary>
    public string useremail
    {
        set { _useremail = value; }
        get { return _useremail; }
    }

    /// <summary>
    /// 
    /// </summary>
    public string userpassword
    {
        set { _userpassword = value; }
        get { return _userpassword; }
    }
    #endregion Model
}

public List<ModelUser> DataTableToList(DataTable dt)
{
    List<ModelUser> modelList = new List<ModelUser>();
    int rowsCount = dt.Rows.Count;
    if (rowsCount > 0)
    {
        ModelUser model;
        for (int n = 0; n < rowsCount; n++)
        {
            model = new ModelUser();

            model.userid = (int)dt.Rows[n]["userid"];
            model.username = dt.Rows[n]["username"].ToString();
            model.useremail = dt.Rows[n]["useremail"].ToString();
            model.userpassword = dt.Rows[n]["userpassword"].ToString();

            modelList.Add(model);
        }
    }
    return modelList;
}

static DataTable GetTable()
{
    // Here we create a DataTable with four columns.
    DataTable table = new DataTable();
    table.Columns.Add("userid", typeof(int));
    table.Columns.Add("username", typeof(string));
    table.Columns.Add("useremail", typeof(string));
    table.Columns.Add("userpassword", typeof(string));

    // Here we add five DataRows.
    table.Rows.Add(25, "Jame", "Jame@hotmail.com", DateTime.Now.ToString());
    table.Rows.Add(50, "luci", "luci@hotmail.com", DateTime.Now.ToString());
    table.Rows.Add(10, "Andrey", "Andrey@hotmail.com", DateTime.Now.ToString());
    table.Rows.Add(21, "Michael", "Michael@hotmail.com", DateTime.Now.ToString());
    table.Rows.Add(100, "Steven", "Steven@hotmail.com", DateTime.Now.ToString());
    return table;
}

protected void Page_Load(object sender, EventArgs e)
{
    List<ModelUser> userList = new List<ModelUser>();

    DataTable dt = GetTable();

    userList = DataTableToList(dt);

    gv.DataSource = userList;
    gv.DataBind();
}[enter image description here][1]

</asp:GridView>
</div>

0

ম্যানুয়ালি এ- DataTableতে রূপান্তর করার Listপরিবর্তে আমরা জেনেরিক পদ্ধতিটি ব্যবহার DataTableকরতে পারি List

দ্রষ্টব্য: DataTable'গুলি ColumnNameএবং Typeগুলি PropertyNameএকই হওয়া উচিত।

নীচের পদ্ধতিটি কল করুন:

long result = Utilities.ConvertTo<Student>(dt ,out listStudent);

// Generic Method
public class Utilities
{
    public static long ConvertTo<T>(DataTable table, out List<T> entity)
    {
        long returnCode = -1;
        entity = null;

        if (table == null)
        {
            return -1;
        }

        try
        {
            entity = ConvertTo<T>(table.Rows);
            returnCode = 0;
        }

        catch (Exception ex)
        {
            returnCode = 1000;
        }

        return returnCode;
    }

    static List<T> ConvertTo<T>(DataRowCollection rows)
    {
        List<T> list = null;
        if (rows != null)
        {
            list = new List<T>();

            foreach (DataRow row in rows)
            {
                T item = CreateItem<T>(row);
                list.Add(item);
            }
        }

        return list;
    }

    static T CreateItem<T>(DataRow row)
    {
        string str = string.Empty;
        string strObj = string.Empty;

        T obj = default(T);

        if (row != null)
        {
            obj = Activator.CreateInstance<T>();
            strObj = obj.ToString();
            NameValueCollection objDictionary = new NameValueCollection();

            foreach (DataColumn column in row.Table.Columns)
            {
                PropertyInfo prop = obj.GetType().GetProperty(column.ColumnName);

                if (prop != null)
                {
                    str = column.ColumnName;

                    try
                    {
                        objDictionary.Add(str, row[str].ToString());
                        object value = row[column.ColumnName];
                        Type vType = obj.GetType();

                        if (value == DBNull.Value)
                        {
                            if (vType == typeof(int) || vType == typeof(Int16)
                                                     || vType == typeof(Int32)
                                                     || vType == typeof(Int64)
                                                     || vType == typeof(decimal)
                                                     || vType == typeof(float)
                                                     || vType == typeof(double))
                            {
                                value = 0;
                            }

                            else if (vType == typeof(bool))
                            {
                                value = false;
                            }

                            else if (vType == typeof(DateTime))
                            {
                                value = DateTime.MaxValue;
                            }

                            else
                            {
                                value = null;
                            }

                            prop.SetValue(obj, value, null);
                        }

                        else
                        {
                            prop.SetValue(obj, value, null);
                        }
                    }

                    catch(Exception ex)
                    {

                    }
                }
            }

            PropertyInfo ActionProp = obj.GetType().GetProperty("ActionTemplateValue");

            if (ActionProp != null)
            {
                object ActionValue = objDictionary;
                ActionProp.SetValue(obj, ActionValue, null);
            }
        }

        return obj;
    }
}

0

ডেটেটেবল থেকে জেনেরিক তালিকার জন্য আপনি এর মতো জেনেরিক পদ্ধতি ব্যবহার করতে পারেন

public static List<T> DataTableToList<T>(this DataTable table) where T : class, new()
{
    try
    {
        List<T> list = new List<T>();

        foreach (var row in table.AsEnumerable())
        {
            T obj = new T();

            foreach (var prop in obj.GetType().GetProperties())
            {
                try
                {
                    PropertyInfo propertyInfo = obj.GetType().GetProperty(prop.Name);
                    if (propertyInfo.PropertyType.IsEnum)
                    {
                        propertyInfo.SetValue(obj, Enum.Parse(propertyInfo.PropertyType, row[prop.Name].ToString()));
                    }
                    else
                    {
                        propertyInfo.SetValue(obj, Convert.ChangeType(row[prop.Name], propertyInfo.PropertyType), null);
                    }                          
                }
                catch
                {
                    continue;
                }
            }

            list.Add(obj);
        }

        return list;
    }
    catch
    {
        return null;
    }
}

0

জেনেরিকে রূপান্তর DataTableকরা হচ্ছেDictionary

public static Dictionary<object,IList<dynamic>> DataTable2Dictionary(DataTable dt)
{
    Dictionary<object, IList<dynamic>> dict = new Dictionary<dynamic, IList<dynamic>>();

    foreach(DataColumn column in dt.Columns)
    {
        IList<dynamic> ts = dt.AsEnumerable()
                              .Select(r => r.Field<dynamic>(column.ToString()))
                              .ToList();
        dict.Add(column, ts);
    }
    return dict;
}

0

এক্সটেনশন ব্যবহার করুন:

public static class Extensions
{
    #region Convert Datatable To List
    public static IList<T> ToList<T>(this DataTable table) where T : new()
    {
        IList<PropertyInfo> properties = typeof(T).GetProperties().ToList();
        IList<T> result = new List<T>();

        foreach (var row in table.Rows)
        {
            var item = CreateItemFromRow<T>((DataRow)row, properties);
            result.Add(item);
        }
        return result;
    }
    private static T CreateItemFromRow<T>(DataRow row, IList<PropertyInfo> properties) where T : new()
    {
        T item = new T();
        foreach (var property in properties)
        {
            property.SetValue(item, row[property.Name], null);
        }
        return item;
    }
    #endregion
}

0

ক্লাসের জেনেরিক তালিকায় ডাটাবেট সারিগুলি নির্ধারণ করতে

  List<Candidate> temp = new List<Candidate>();//List that holds the Candidate Class,
    //Note:The Candidate class contains RollNo,Name and Department
    //tb is DataTable
    temp = (from DataRow dr in tb.Rows
                        select new Candidate()
                        {
                            RollNO = Convert.ToInt32(dr["RollNO"]),
                            Name = dr["Name"].ToString(),
                            Department = dr["Department"].ToString(),

                        }).ToList();

0

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

নিউটনসফট.জসন ব্যবহার করে;

var json = JsonConvert.SerializeObject(dataTable);
var model = JsonConvert.DeserializeObject<List<ClassName>>(json);

0

আপনি নিম্নলিখিত দুটি জেনেরিক ফাংশন ব্যবহার করতে পারেন

private static List<T> ConvertDataTable<T>(DataTable dt)
    {
        List<T> data = new List<T>();
        foreach (DataRow row in dt.Rows)
        {
            T item = GetItem<T>(row);
            data.Add(item);
        }
        return data;
    }
    private static T GetItem<T>(DataRow dr)
    {

        Type temp = typeof(T);
        T obj = Activator.CreateInstance<T>();

        foreach (DataColumn column in dr.Table.Columns)
        {
            foreach (PropertyInfo pro in temp.GetProperties())
            {
                if (pro.Name == column.ColumnName)
                    pro.SetValue(obj, dr[column.ColumnName].ToString(), null);
                else
                    continue;
            }
        }
        return obj;
    }

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

List<StudentScanExamsDTO> studentDetails = ConvertDataTable<StudentScanExamsDTO>(dt);

0
lPerson = dt.AsEnumerable().Select(s => new Person()
        {
            Name = s.Field<string>("Name"),
            SurName = s.Field<string>("SurName"),
            Age = s.Field<int>("Age"),
            InsertDate = s.Field<DateTime>("InsertDate")
        }).ToList();

ডটনেটফিডাল উদাহরণের সাথে কাজ করার লিঙ্ক

using System;
using System.Collections.Generic;   
using System.Data;
using System.Linq;
using System.Data.DataSetExtensions;

public static void Main()
{
    DataTable dt = new DataTable();
    dt.Columns.Add("Name", typeof(string));
    dt.Columns.Add("SurName", typeof(string));
    dt.Columns.Add("Age", typeof(int));
    dt.Columns.Add("InsertDate", typeof(DateTime));

    var row1= dt.NewRow();
    row1["Name"] = "Adam";
    row1["SurName"] = "Adam";
    row1["Age"] = 20;
    row1["InsertDate"] = new DateTime(2020, 1, 1);
    dt.Rows.Add(row1);

    var row2 = dt.NewRow();
    row2["Name"] = "John";
    row2["SurName"] = "Smith";
    row2["Age"] = 25;
    row2["InsertDate"] = new DateTime(2020, 3, 12);
    dt.Rows.Add(row2);

    var row3 = dt.NewRow();
    row3["Name"] = "Jack";
    row3["SurName"] = "Strong";
    row3["Age"] = 32;
    row3["InsertDate"] = new DateTime(2020, 5, 20);
    dt.Rows.Add(row3);

    List<Person> lPerson = new List<Person>();
    lPerson = dt.AsEnumerable().Select(s => new Person()
    {
        Name = s.Field<string>("Name"),
        SurName = s.Field<string>("SurName"),
        Age = s.Field<int>("Age"),
        InsertDate = s.Field<DateTime>("InsertDate")
    }).ToList();

    foreach(Person pers in lPerson)
    {
        Console.WriteLine("{0} {1} {2} {3}", pers.Name, pers.SurName, pers.Age, pers.InsertDate);
    }
}   

public class Person
{
    public string Name { get; set; }
    public string SurName { get; set; }
    public int Age { get; set; }
    public DateTime InsertDate { get; set; }
}

}

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.