【发布时间】:2014-08-29 15:38:00
【问题描述】:
我有一个包含几列的表,我按列搜索 + 用户输入的字符串以过滤结果。但是,我无法让我的 DateTime 列正确过滤(其余所有工作)。我可以显示完全匹配的结果,但如果用户只输入一个没有时间的日期,我就没有结果。
预期结果是,如果用户输入 14/08 或 14/08/2014 或 14/08/2014 12:56:32,则应显示与输入的日期或日期和时间匹配的所有结果。
我的 Linq
var filterresults = from m in db.cd_CleardownCore
select m;
我的过滤器尝试 1:(仅完全匹配
DateTime datetime = Convert.ToDateTime(searchString);
string strDate = datetime.ToShortDateString();
filterresults = filterresults.Where(x => x.TimeStarted == datetime)
我的过滤器尝试 2:(检查列是否包含日期
filterresults = filterresults.Where(x => x.TimeStarted.ToString().Contains(strDate));
那么有人可以解释为什么尝试 2 不起作用吗?或者可以提出解决方案? + 如果我能提供任何使之更清楚的信息,请告诉我。
【问题讨论】:
-
只是好奇你为什么要做包含而不是开始。但是,如果我是你我会调试这个的方式,就是看看 TimeStarted.ToString() 给你什么。这会让你知道哪里出了问题
-
来自msdn.microsoft.com/en-us/library/k494fzbf(v=vs.110).aspx 它说 date.ToString() 以当前文化格式返回日期和时间。这是否可能意味着您的 TimeStarted.ToString() 正在返回“08/14/2014”?
标签: c# linq asp.net-mvc-4 datetime linq-to-entities