以DataRow中的特定列为目标

本文关键字:目标 DataRow | 更新日期: 2023-09-27 18:11:50

我正在尝试执行Select * where [columnname] = [value]的c#等效。我开始用foreach循环逐行迭代表,但是我忘记了不能通过row.column["<colname>"]访问列。

我如何达到这个目标?我看到的大多数示例都以特定的行为目标,目的是将其值转换为字符串,但是我的任务是将值为DateTime == < DateTime.Today的所有条目移动到存档表中。

我可以继续下面的代码吗?还是我的方式不对?

void archiveDates()
{
   foreach (DataRow row in workingupdates.storageTable.Rows)
   {
       //target DateTime column here                         
   }
}

以DataRow中的特定列为目标

您可以使用Field扩展方法,它是强类型的,也支持可空类型。您对索引、名称或DataColumn(以及其他)有过载:

foreach (DataRow row in workingupdates.storageTable.Rows)
{
   DateTime dt = row.Field<DateTime>("columnname");          
}

如果您想查找日期列具有特定值的所有行,您可以使用Linq-To-DataTable:

var matchingDataRows = workingupdates.storageTable.AsEnumerable()
    .Where(row => row.Field<DateTime>("columnname") == dateTimeVariable);

现在您可以简单地枚举这个查询:

foreach (DataRow row in matchingDataRows)
{
   // ...                      
}

或者创建一个像

这样的集合
    DataRow[]matchingDataRows.ToArray()List<DataRow> with matchingDataRows.ToList() matchingDataRows.CopyToDataTable() 添加DataTable

请注意,您必须将System.Linq;添加到文件的顶部