在我的应用程序的搜索功能中,我实现了一个搜索功能,它对数据库执行以下语句。
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
的异常。有什么方法可以避免这种异常吗?我更喜欢一种可以在一行中解决它的方法。
谢谢。
答案 0 :(得分:4)
只需将数据库中列的数据类型更改为nvarchar(MAX)
,您的代码就像魅力一样。如果你做一些谷歌搜索,这是一个众所周知的问题。对于instace,请查看here。
答案 1 :(得分:0)
您可以简单地将列转换为VARCHAR - 如下所示:
ALTER TABLE DBMovies
ALTER COLUMN Actors VARCHAR(MAX)