查询数据表中行和列交集处的特定值
本文关键字:数据表 查询 | 更新日期: 2023-09-27 18:09:37
假设我有一个数据表(mydatatable),其第一行是一行标题,其后续行是简单的数字数据。例如:
| 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");
我可以得到乙烯列中的所有值,但是我想用"where"子句过滤我的查询,这样我就可以在特定的行索引和像"乙烯"这样的列的交叉处检索一个值。
因此,它看起来不像(除非我错过了什么),我可以在Linq查询中使用' row
'访问行集合的索引。即使我有这个,我也不确定如何形成我的查询的"where"子句来得到我想要的。
我需要什么来让我的查询能够过滤到特定行和列的交集?
例如,我想要值18.6540,它存在于行索引2和乙烯列。
如果您知道特定的行索引,那么您可以直接使用.Rows
集合指定行索引,就像索引数组或集合一样(因为它是基于0的索引,第2行将是索引1
):
var result = myDataTable.Rows[1].Field<String>("Ethylene")
在结果中不这样做是有原因的吗?
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();