我有一个包含Name
(字符串)和Number
(int)列的Employees表。
我可以为员工寻找任何东西。所以,
var query = cnn.Table<Employees>()
.Where(x => x.Name.Contains(search) ||
x.Number.ToString().Contains(search));
SQLite.Net.Platform.WinRT.dll中出现“SQLite.Net.SQLiteException”类型的异常,但未在用户代码中处理
附加信息:没有这样的功能:tostring
如何将Number列转换为字符串?
谢谢。
答案 0 :(得分:4)
问题是SQLLite linq不知道什么是ToString()
- 这是一个C#方法,可以覆盖它来做任何事情。您应该使用SqlFunctions
:
var query = cnn.Table<Employees>()
.Where(x => x.Name.Contains(search) ||
SqlFunctions.StringConvert((int)x.Number).Contains(search));
另一种解决方案可以是在.ToList()
之前添加AsEnumerable()
/ where
,但是过滤将在c#而不是数据库中进行
还可以:
var query = cnn.Table<Employees>()
.Where(x => x.Name.Contains(search) || x.Number > 0)
.AsEnumerable()
.Where( x => x.Number.ToString().Contains(search));