我在DataTable中使用DateTime类型的Created
DataColumn并创建了一个RowFilter表达式,只返回在任何一天晚上10点之后创建的行:
"SUBSTRING(Convert(Created, 'System.String'),11,8) >= '" + cStartTime + "'"
这应该将DateTime转换为System.String
,将时间元素提取为8个字符的子字符串,并将其与已知的字符串值(cStartTime)进行比较,例如: “22:00:00”。它应返回一行,但不返回任何内容。
答案 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}}。