获取特定列从DataTable后日期过滤器
本文关键字:日期 过滤器 DataTable 获取 | 更新日期: 2023-09-27 18:14:56
我有一个10列的数据表,我想只对两列进行过滤。其中一列是文件日期,我有逻辑获取上个月的文件日期值。这个功能正常,除了我不能得到另一列,也就是电表读数。心理逻辑如下:
(1)获取列名File Date,(2)获取列名Meter Reading,(3)如果列File Date介于现在和上个月之间,对仪表读数值(不是File Date值,因为这只是一个过滤器)进行处理。
foreach (DataRow r in datatable.Rows)
{
foreach (DataColumn c in datatable.Columns)
{
if (c.ColumnName == "File Date")
{
// filter date logic works, but now can't access the meter reading
}
我尝试了相反的方法,首先循环遍历列(然后再循环遍历行),但是c.ColumnName[0]的逻辑并没有得到列中的第一个值,而是得到所有列的第一个字母。我还尝试了c.ColumnName("文件日期")和c.Column("仪表读数"),这是无效的逻辑。
我还认为我可以在columns循环中声明一个变量,它将获得我想要的列。datacolumlmeterread = col.ColumnName("Meter Reading"),但这也不返回它。我想看看是否有一种方法可以使用lamba过滤,我可以将列过滤为"Meter Reading"或"File Date"的特定名称。
明白了: filedate = row["File Date"]; meterreading = row["Meter Reading"]
您可以将数据表行过滤为DataView dv = new DataView(yourDatatable);
dv.RowFilter = "query"; // query example = "Name = someName"
一旦拥有了包含所有相关行的表,就可以将我们的逻辑应用于任何列。
或者,您不需要遍历列。您可以简单地执行r["File Date"]来获取该特定行的FileDate值。如果value满足你的过滤器,你可以访问r["MeterReading"]。