如果您想完全匹配提供的 DateTime,包括几分之一秒,您应该使用具有足够精度的 DateTime 格式。可能往返格式(“o”)是一个不错的选择:
foundRows = dttemp.Select(String.Format(dttemp.Locale, "whn = '{0:o}'", datevalue));
但是,您更有可能想要匹配某个范围内的值。例如,如果您希望所有值具有相同的日期,但一天中的任何时间,您可以使用:
foundRows = dttemp.Select(String.Format(dttemp.Locale, "whn >='{0:o}' AND whn < '{1:o}'",
datevalue.Date, datevalue.AddDays(1).Date));
同样,如果您希望所有值都在同一秒内(但可能只有几分之一秒),您可以使用:
DateTime from = dttemp.AddTicks( - (dttemp.Ticks % TimeSpan.TicksPerSecond));
foundRows = dttemp.Select(String.Format(dttemp.Locale, "whn >='{0:o}' AND whn < '{1:o}'",
from, from.AddSeconds(1)));
对 AddTicks 的调用会将提供的 DateTime 截断为整数秒,如对此 StackOverflow 问题的接受答案中所述。
注意我曾经dttemp.Locale
使用正确的语言环境 (CultureInfo),以防您的 DataTable 具有与当前文化不同的语言环境。