我有DataTable一个DateTime存储为string像“二零一七年十二月二十零日”。我想选择过去 6 个月内的所有行。
我可以用一个foreach:
foreach (DataRow dr in dsErgebnisse.Tables[0].Rows)
{
if (Convert.ToDateTime(dr[6].ToString()) > DateTime.Now.AddMonths(-6))
{
dsTemp.Tables[0].ImportRow(dr);
}
}
这给了我 3.613 行。
我尝试通过选择来检查它是否更快:
DataRow[] foundRows = dsErgebnisse.Tables[0].Select("DATUM > '" + DateTime.Now.AddMonths(-6).ToShortDateString() + "'");
DATUM是我的列,其中DateTime存储为字符串。这给了我 2.624 行。
为什么有区别?我试图在 select 语句中使用 convert 但我失败了System.Data.EvaluateException:
foundRows = dsErgebnisse.Tables[0].Select("Convert(DATUM, 'System.DateTime') > '" + DateTime.Now.AddMonths(-6).ToShortDateString() + "'");
鸿蒙传说
相关分类