以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
}
}
您可以使用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;
添加到文件的顶部