2013-08-28 103 views
1
創建數據表

請諮詢我如何可以創建一個DataTable有以下來源:通過LINQ的

public class MyClass : IEquatable<My> 
{ 
    public int field1 { get; set; } 
    public int field2 { get; set; } 
} 

List<MyClass> lst = new List<MyClass>(); 

MyClass e = new MyClass; 
e.field1 = 1; 
e.field2 = 2; 

lst.Add(e); 

如何我可以使用LINQ FIELD1和FIELD2值創建數據表?

+0

DT是一種特殊的LINQ前對象,表示「鬆散」類型的矩陣。可能有反射解決方案(與LINQ不嚴格相關),但只需創建DT(和列定義),然後添加具有值的新行(可按列順序爲每行分配一個數組)。由於DT是一個可變結構,因此我會推薦一個標準的'foreach'來添加新行。 (反射式方法也會這樣做,但會自動從給定源中提取名稱/類型。) – user2246674

回答

1

可惜你不能使用任何冷靜LINQ特定的代碼,但你可以創建一個DataTable,添加列,循環在你居住

DataTable dt = new DataTable(); 
dt.Columns.Add("field1"); 
dt.Columns.Add("Field2"); 

lst.ForEach(l => { 

var dr = dt.NewRow(); 
    dr[0] = l.field1; 
    dr[1] = l.field2; 

    dt.Rows.Add(dr); 
}); 
+0

我認爲這是'ForEach'的一個惡意使用 - 儘管這是首選!我從來沒有使用過它,喜歡'foreach'的語法,並表明它不是像大多數其他LINQ用法那樣的純操作。這就是說,這表明了方法的關鍵(可能想要鍵入列,並可以通過數組來分配)。 – user2246674

+0

感謝您的諮詢。 – borobos