Скопировать данные из списка <MyEntity>в объект DataTable - PullRequest
1 голос
/ 22 июля 2011

У меня есть список <> объектов (где объекты являются пользовательским классом сущностей), и у меня есть DataTable, в котором есть столбцы, которые соответствуют свойствам класса сущности.

Есть ли способ, которым я могускопируйте элементы данных со списком в DataTable без необходимости циклически перебирать список и вручную добавлять данные в DataTable.

Вот пример моего текущего кода (C # 4.0):

    void MergeData()
    {
        List<MyEntity> myEntities = GetEntities();

        // Create a DataTable based on the Properties of the MyEntity class
        Type entity = typeof(MyEntity);
        PropertyInfo[] properties = entity.GetProperties();
        DataTable dt = new DataTable();
        foreach (PropertyInfo pi in properties)
        {
            dt.Columns.Add(pi.Name);
        }

        // Here's where I loop through the List and fill the DataTable. 
        // Is there a way to fill the DataTable without looping through the List?    
        foreach (MyEntity e in myEntities)
        {
            DataRow dr = dt.NewRow();
            foreach (PropertyInfo pi in properties)
            {
                dr[pi.Name] = pi.GetValue(e, null);
            }
            dt.Rows.Add(dr);
        }
    }

Как правило, список <> содержит около 27 тыс. Элементов, поэтому мне просто любопытно, есть ли более чистый и / или более оптимизированный способ передачи данных из моего списка <> в DataTable.

Ответы [ 2 ]

0 голосов
/ 29 января 2013
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

/// <summary>
/// Summary description for UserBO
/// </summary>
public class UserBO
{
    public UserBO()
    {
        //
        // TODO: Add constructor logic here
        //
    }
    private string _mUserName;

    public string UserName
    {
        get { return _mUserName; }
        set { _mUserName = value; }
    }
    private string _mPassword;

    public string Password
    {
        get { return _mPassword; }
        set { _mPassword = value; }
    }
    private int _mUserID;

    public int UserID
    {
        get { return _mUserID; }
        set { _mUserID = value; }
    }
}

 IList<UserBO> objlistUserBo = new List<UserBO>();
 objlistUserBo = objUserFacade.Getuserinfo(objUSerBO);

            for (int iterator=0; iterator < objlistUserBo.Count; iterator++)
            {
                objUSerBO = (UserBO)objlistUserBo[iterator];
                string name = objUSerBO.UserName;
                string pwd = objUSerBO.Password;
            }
0 голосов
/ 22 июля 2011

Как насчет того, чтобы у ваших сущностей была возможность заполнять строку данных, которую можно добавить в вашу таблицу данных.Таким образом, вы уменьшите использование отражения.

...