2012-03-15 21 views
1

我有以下ItemArray:獲取單元從DataTable.Row.ItemArray使用LINQ

dt.Rows[0].ItemArray.. //{0,1,2,3,4,5} 

的標題是:item0,物品1,ITEM2等。

到目前爲止,得到的值從我用來索引它的ItemArray。

有沒有什麼辦法可以通過基於列名的Linq表達式來獲取ItemArray中的值?

感謝

+0

你可以不用linq來做dt.Rows [0] [「columnName」]。ToString(); – Kaf 2012-03-15 08:35:35

+0

是的,我只是想知道如何使用linq做代碼維護 – 2012-03-15 08:37:45

回答

3

您還可以使用列名獲取字段值:

int item1 = row.Field<int>("Item1"); 

你可以也使用LINQ-to-DataSet

int[] allItems = (from row in dt.AsEnumerable() 
        select row.Field<int>("Item1")).ToArray(); 

或方法的語法:

int[] allItems = dt.AsEnumerable().Select(r => r.Field<int>("Item1")).ToArray(); 
+0

您好Tim,感謝您的評論。我不完全理解這裏的語法,因爲我希望在特定行上執行此操作(讓我們說Rows [0]),我怎麼看你的例子? – 2012-03-15 08:40:30

+0

@DavidRasuli:如果你只有一行,你只想得到一個特定的字段值,使用我顯示的第一個方法('row.Field (「Item1」)')。否則,解釋你想要達到的目標。 – 2012-03-15 08:41:58

+0

謝謝,這就是我所尋找的。 – 2012-03-15 08:45:20

1

如果使用Item indexer而非ItemArray,您可以通過列名訪問項目,不管你是否使用LINQ與否。

dt.Rows[0]["Column Name"]

1

添Schmelter的答案可能是你看着什麼,只是還添加使用Convert類,而不是DataRow.Field這樣:

var q = (from row in dataTable.AsEnumerable() select Convert.ToInt16(row["COLUMN1"])).ToArray();