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

时间:2014-07-25 14:23:16

标签: c# datatable

我有一个包含10列的数据表,我想只过滤两列。一列是文件日期,我有逻辑,它获取上个月的文件日期值。这个功能正常,除了我不能得到另一列是抄表。心理逻辑如下:

(1)获取列名称文件日期,(2)获取列名称Meter Reading,以及(3)如果列文件日期介于现在和上个月之间,请使用仪表读数值(不是文件日期值,因为这只是一个过滤器。)

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(“File Date”)和c.Column(“Meter Reading”),这是无效的逻辑。

我还以为我可以在columns循环中声明一个变量,这将获得我想要的列。 DataColumn meterread = col.ColumnName(“Meter Reading”),但这不会返回它。我查看是否有办法使用lamba进行过滤,我会将列过滤到特定名称“Meter Reading”或“File Date”。

明白了: filedate = row["File Date"]; meterreading = row["Meter Reading"]

1 个答案:

答案 0 :(得分:0)

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

一旦您拥有包含所有相关行的表,请将ur逻辑应用于任何列。

或者,您不需要遍历列。您只需执行r ["文件日期"]即可获取该特定行的FileDate值。如果值满足您的过滤器,您可以访问r [" MeterReading"]。