我有以下ItemArray:获取单元从DataTable.Row.ItemArray使用LINQ
dt.Rows[0].ItemArray.. //{0,1,2,3,4,5}
的标题是:item0,物品1,ITEM2等。
到目前为止,得到的值从我用来索引它的ItemArray。
有没有什么办法可以通过基于列名的Linq表达式来获取ItemArray中的值?
感谢
我有以下ItemArray:获取单元从DataTable.Row.ItemArray使用LINQ
dt.Rows[0].ItemArray.. //{0,1,2,3,4,5}
的标题是:item0,物品1,ITEM2等。
到目前为止,得到的值从我用来索引它的ItemArray。
有没有什么办法可以通过基于列名的Linq表达式来获取ItemArray中的值?
感谢
您还可以使用列名获取字段值:
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();
您好Tim,感谢您的评论。我不完全理解这里的语法,因为我希望在特定行上执行此操作(让我们说Rows [0]),我怎么看你的例子? – 2012-03-15 08:40:30
@DavidRasuli:如果你只有一行,你只想得到一个特定的字段值,使用我显示的第一个方法('row.Field
谢谢,这就是我所寻找的。 – 2012-03-15 08:45:20
如果使用Item indexer而非ItemArray
,您可以通过列名访问项目,不管你是否使用LINQ与否。
dt.Rows[0]["Column Name"]
添Schmelter的答案可能是你看着什么,只是还添加使用Convert
类,而不是DataRow.Field
这样:
var q = (from row in dataTable.AsEnumerable() select Convert.ToInt16(row["COLUMN1"])).ToArray();
你可以不用linq来做dt.Rows [0] [“columnName”]。ToString(); – Kaf 2012-03-15 08:35:35
是的,我只是想知道如何使用linq做代码维护 – 2012-03-15 08:37:45