query = query.Where(q => q.Date.ToString().Contains(strDate));
以上陈述不正确。
如果我使用“==”那么它将与确切日期匹配。那没问题。但我可以过滤,就像我们过滤字符串??
答案 0 :(得分:3)
我真的不明白你对“过滤器”的意思。
您可以执行以下操作:
query = query.Where(q => q.Date.Year.Equals(myDate.Year));
或
query = query.Where(q => q.Date.Day.Equals(myDate.Day));
如果这就是你所追求的目标。
当然,你必须将strDate强制转换为DateTime。如果您真的不想这样做,您也可以将DB日期转换为相同格式的字符串:
query = query.Where(q => q.Date.ToString("dd-MM-yyyy").Contains(strDate));
答案 1 :(得分:0)
假设q.Date是DateTime的一个实例,我认为将DateTime实例转换为String是比较日期的最佳方法。基于对象的属性过滤DateTime会更加可靠。例如,年,月等......
例如,如果您想在strDate中过滤年份,则可以执行以下操作。
var d = DateTime.Parse(strDate);
query = query.Where(q => q.Date.Year == d.Year);
您能否通过详细说明strDate将包含哪些类型的值来为我们提供更多上下文,以便我们知道您要过滤哪些内容。
答案 2 :(得分:0)
如果您确定要在搜索中获得的字符串,则可以随时执行特定于您所在地区的字符串。
(((q.Date == null ? DateTime.Parse("01/01/1900") : q.Date).Value.Day.ToString()) + "/" + ((q.Date == null ? DateTime.Parse("01/01/1900") : q.Date).Value.Month.ToString()) + "/" + ((q.Date == null ? DateTime.Parse("01/01/1900") : q.Date).Value.Year.ToString())).ToString().Contains(strDate) || (q.Date == null ? DateTime.Parse("01/01/1900") : q.Date).ToString().Contains(strDate))
这会产生匹配日期搜索的d/m/yyyy
字符串,例如。这对于公共搜索来说并不理想,但它比简单的.ToString().Contains()
更好。