我有一个包含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"]
答案 0 :(得分:0)
您可以将数据表行过滤为
DataView dv = new DataView(yourDatatable);
dv.RowFilter = "query"; // query example = "Name = someName"
一旦您拥有包含所有相关行的表,请将ur逻辑应用于任何列。
或者,您不需要遍历列。您只需执行r ["文件日期"]即可获取该特定行的FileDate值。如果值满足您的过滤器,您可以访问r [" MeterReading"]。