获取特定列从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"]

获取特定列从DataTable后日期过滤器

您可以将数据表行过滤为DataView dv = new DataView(yourDatatable); dv.RowFilter = "query"; // query example = "Name = someName"

一旦拥有了包含所有相关行的表,就可以将我们的逻辑应用于任何列。

或者,您不需要遍历列。您可以简单地执行r["File Date"]来获取该特定行的FileDate值。如果value满足你的过滤器,你可以访问r["MeterReading"]。