如何将类型化的DataTable转换为实体列表?

时间:2011-05-02 11:34:25

标签: c# entity strongly-typed-dataset

我需要将Typed DataTable的数据转换为我的实体列表。我用DataTable字段映射了实体的所有字段。

有什么想法吗?

4 个答案:

答案 0 :(得分:4)

我会查看AutoMapper这是一个关注这类场景的好工具。

同样here是完全符合您情景的人。

希望这有用!

答案 1 :(得分:2)

一种方法是通过自定义代码完成 让我们假设你的实体类名是'MyEnt'

 public class MyEnt
    {
     public string Name {get; set;}
     public string Type {get; set;}
     public LoadMyEnt(object [] array)
      {
         this.Name = array[0].ToString();
         this.Type = array[1].ToString();   
      }
    }

//对于数据表,你可以做

List<MyEnt> list = new List<MyEnt>();
foreach(DataRow dr in table.Rows)
{
  MyEnt obj = new MyEnt();
obj.Load(dr.ItemArray);
list.Add(obj);
}

答案 2 :(得分:1)

您可以先将其转换为通用数据表,然后将该数据表转换为列表 有很多代码片段可用于将通用数据转换为列表。有些是:
How do you convert a DataTable into a generic list?
Convert DataTable to List<T>
Fastest way to convert datatable to generic list

答案 3 :(得分:0)

您可以编写扩展方法:

public static List<TItem> Cast<TItem>(this DataRowCollection drc, Func<DataRow, TItem> converter)
    {
        List<TItem> list= new List<TItem>();
        foreach (DataRow row in drc)
        {
            list.Add(converter(row));
        }
        return list;
    }

其中转换器例如是包含以下内容的lambda表达式:

item => new YourClass(item)

谢谢,

丹尼斯