【发布时间】:2014-02-06 20:38:54
【问题描述】:
有没有办法使用 LINQ / .NET 在 Date 上执行“LIKE”?我正在尝试对允许用户查找时间的自动完成框进行操作。
Function GetTimesAvailable(term As String) As ActionResult
Using db As New Context
Dim vals = db.CalendarSlots.Where(Function(c) c.TimeStart.ToString.Contains(term)).Select(Function(c) c.TimeStart).ToList
Return Json(vals, JsonRequestBehavior.AllowGet)
End Using
End Function
此代码不起作用: LINQ to Entities 无法识别方法“System.String ToString()”方法,并且该方法无法转换为存储表达式。
【问题讨论】:
-
您到底为什么要这样做?日期是序数类型,如果你只使用范围,你会更容易编码并且最终得到更有效的查询。
-
我想要它,因为这是销售团队想要的页面。我检查了规范,不需要有效的查询。他们也不想要范围。
-
呃,你不要问销售人员,因为他们不知道他们在说什么。我们在这里谈论的是完全相同的结果,只是没有可怕的混乱。他们不需要输入范围,但you仍然使用范围查询来自动完成。没有冒犯,但“不需要高效查询”这句话是我听过的最不专业的说法之一。
-
您能否添加一个示例来执行您建议的范围查询?老实说,我不知道如何使范围查询看起来像自动完成。我没有被你的说法冒犯,但我很困扰你似乎表明你有一个你没有分享的解决方案。
-
附带说明,VB.NET 实际上有一个
Like运算符:msdn.microsoft.com/en-us/library/swf8kaxw.aspx
标签: .net entity-framework linq