我有一个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/

10-14 16:38
查看更多