我有一个DataTable xData
,其中的DateTime
列具有毫秒精度,我需要提取与确切时间相匹配的行(以毫秒为单位),但语法不正确。
我试过了
DateTime dt = timeStampList[i];
string str = dt.ToString("yyyy-MM-dd HH:mm:ss.fff");
DataRow[] result = xData.Select("TimeStamp2 = " + str);
foreach (DataRow row in result)
{
Console.WriteLine("{0}, {1}", row[0], row[1]);
}
但
DataRow[] result = xData.Select("TimeStamp2 = " + str);
导致错误:
语法错误:'16'运算符后缺少操作数。
我进行了搜索,但是大多数示例仅显示如何按日期选择,而不是完整的
datetime
毫秒。 最佳答案
问题是您必须将要查找的日期/时间传递给过滤器。
起初,我认为Select
不支持亚秒级精度,但根据Dmitry的回答,它支持。
另一种方法是使用Linq to DataSet,它可以避免序列化日期/时间:
DateTime dt = timeStampList[i];
IEnumerable<DataRow> selectedRows =
xData.AsEnumerable().Where(row => (row.Field<DateTime>("TimeStamp2") == dt));
foreach (DataRow row in selectedRows)
{
Console.WriteLine("{0}, {1}", row[0], row[1]);
}
关于c# - 数据表按确切的DateTime选择,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26454586/