2011-05-02 94 views
2

我需要將Typed DataTable的數據轉換爲我的實體列表。我用DataTable的字段映射了實體的所有字段。如何將類型化的DataTable轉換爲實體列表?

任何想法?

+2

喜歡的東西http://stackoverflow.com/questions/441023/fastest-way-to-convert-datatable-to-泛型列表?雖然我應該強調,從微型ORM開始,而不是數據表更高效 – 2011-05-02 11:39:17

回答

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); 
} 
+0

看起來像公平的方法,謝謝 – 2011-05-02 13:45:40

+0

好的謝謝 – Lijo 2014-08-05 15:06:55

4

我會檢查出AutoMapper這是一個偉大的工具,專注於這種情況。

另外here是那個已經完成了你的場景的人。

希望這有幫助!

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) 

謝謝,

丹尼斯

相關問題