参数数据类型文本对于较低函数的参数1无效

时间:2014-03-27 10:30:24

标签: c# sql lambda

在我的应用程序的搜索功能中,我实现了一个搜索功能,它对数据库执行以下语句。

resultsquery = db.DBMovies.Where(m => (m.Actors.ToLower()).Contains(q.ToLower()))

q.ToLower()部分中,我读取了url参数q并转换为小写并在相关数据库列中找到它。在我的数据库中,专栏' Actors'属于' text'而不是varchar。当我运行我的应用程序时,我得到一个名为Argument data type text is invalid for argument 1 of lower function的异常。有什么方法可以避免这种异常吗?我更喜欢一种可以在一行中解决它的方法。

谢谢。

2 个答案:

答案 0 :(得分:4)

只需将数据库中列的数据类型更改为nvarchar(MAX),您的代码就像魅力一样。如果你做一些谷歌搜索,这是一个众所周知的问题。对于instace,请查看here

答案 1 :(得分:0)

您可以简单地将列转换为VARCHAR - 如下所示:

ALTER TABLE DBMovies
ALTER COLUMN Actors VARCHAR(MAX)