【发布时间】:2012-08-08 14:42:09
【问题描述】:
我在 lambda 查询中遇到了 toLower() 的问题。我有这个代码
var filterResult = articleList
.Where(m => m.Summary
.Contains(filteredModel.Keyword) || m.Body.Contains(filteredModel.Keyword) || m.Headline.Contains(filteredModel.Keyword)
|| m.Title.Contains(filteredModel.Keyword))
.AsQueryable();
我需要将 toLower() 方法添加为 sql。例如:
var filterResult = articleList
.Where(m => m.Summary.toLower()
.Contains(filteredModel.Keyword.toLower()) || m.Body.toLower().Contains(filteredModel.Keyword.toLower()) || m.Headline.toLower().Contains(filteredModel.Keyword.toLower())
|| m.Title.toLower().Contains(filteredModel.Keyword.toLower()))
.AsQueryable();
如上代码,lambda 不允许使用。我想知道是否有其他方法可以做到这一点。
【问题讨论】:
-
你得到什么错误信息?
-
.toLower() 应该是 .ToLower()
-
在 C# 中,方法是
ToLower()而不是toLower(),不确定这是否是拼写错误,但ToLower()应该完全合法使用。 -
@MarkByers 他会得到一个不受支持的异常,因为 SQL 中没有 ToLower 方法。他需要的是 SQL 中不区分大小写的包含。
-
可能是 EF / Linq2SQL 等无法将函数映射到数据库中。如果您的表上有不区分大小写的排序规则,则不需要 ToLower?
标签: c# asp.net-mvc lambda