假设我有一个DataTable(myDatable),其第一行是一行标题,其后续行只是数字数据。例如:
| WaterPercent | Ethylene | Toluene |
|1.0312345 | 74.1323 | 234.000 |
|56.054657 | 18.6540 | 234.000 |
|37.57000 | 94.6540 | 425.000 |
此时,其myDataTable.Columns
和myDataTable.Rows
中包含的所有数据均为Strings
。
使用此查询:
var results = from row in myDataTable.AsEnumerable()
select row.Field<string>("Ethylene");
我可以获取Ethylene列中的所有值,但是我想用“where”子句过滤我的查询,这样我就可以在特定行索引和列之间检索一个值,如“Ethylene” ”
因此,在Linq查询中,我可以使用“row
”访问行集合的索引,看起来不像(除非我遗漏了一些内容)。即使我有这个,我也不确定如何形成我的查询的“where”子句来获得我想要的东西。
我的查询需要什么才能将结果过滤到特定行和列的交集处?
例如,我想要在行索引为2和乙烯列时存在的值18.6540。
答案 0 :(得分:3)
如果您知道特定的行索引,那么您可以使用.Rows
集合直接指定行索引,就像索引数组或集合一样(因为它是基于0的索引,第2行将是索引{{1 }}):
1
答案 1 :(得分:1)
你有没有理由不在结果中这样做?
var results = (from row in myDataTable.AsEnumerable()
select row.Field<string>("Ethylene")).ToArray();
然后只是索引
var myVal = results[2];
否则,您将需要使用Skip()和Take()。
String result = (from row in myDataTable.AsEnumerable()
select row.Field<string>("Ethylene")).Skip(2).Take(1).Single();