mar*_*cos 1 c# sqlite-net sqlite.net uwp
我有包含Name(string) 和Number(int) 列的员工表。
我可以搜索任何员工。所以,
var query = cnn.Table<Employees>()
.Where(x => x.Name.Contains(search) ||
x.Number.ToString().Contains(search));
Run Code Online (Sandbox Code Playgroud)
SQLite.Net.Platform.WinRT.dll 中发生了“SQLite.Net.SQLiteException”类型的异常,但未在用户代码中处理
附加信息:没有这样的功能:tostring
如何将 Number 列转换为字符串?
谢谢你。
问题是 SQLLite linq 不知道是什么ToString()——这是一种可以被覆盖来做任何事情的 C# 方法。你应该使用SqlFunctions:
var query = cnn.Table<Employees>()
.Where(x => x.Name.Contains(search) ||
SqlFunctions.StringConvert((int)x.Number).Contains(search));
Run Code Online (Sandbox Code Playgroud)
另一种解决方案是在之前添加一个.ToList()/但随后过滤将发生在 c# 而不是数据库中AsEnumerable()where
还可以:
var query = cnn.Table<Employees>()
.Where(x => x.Name.Contains(search) || x.Number > 0)
.AsEnumerable()
.Where( x => x.Number.ToString().Contains(search));
Run Code Online (Sandbox Code Playgroud)