2012-03-15 56 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();