DataTable RowFilter在DateTime列的Time组件上

时间:2015-06-09 11:31:39

标签: c# datetime rowfilter

我在DataTable中使用DateTime类型的Created DataColumn并创建了一个RowFilter表达式,只返回在任何一天晚上10点之后创建的行:

"SUBSTRING(Convert(Created, 'System.String'),11,8) >= '" + cStartTime + "'"

这应该将DateTime转换为System.String,将时间元素提取为8个字符的子字符串,并将其与已知的字符串值(cStartTime)进行比较,例如: “22:00:00”。它应返回一行,但不返回任何内容。

1 个答案:

答案 0 :(得分:0)

不要使用这种方法,它很容易出错并且不可读将Linq-To-DataTable转换为var filtered = from row in dataTable.AsEnumerable() let created = row.Field<DateTime>("Created") where created.Hour >= 22 select row; 并使用子字符串,即使它现在可以工作它可能在将来中断(fe如果系统使用不同的文化)。相反,我建议使用DataRow[]

filtered.ToArray()

如果您想DataTable使用filtered.CopyToDataTable()。如果您想要新{{1}}使用{{1}}。