SQLite.Net-PCL 没有这样的功能:ToString

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 列转换为字符串?

谢谢你。

Gil*_*een 5

问题是 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)

  • uwp 上没有 SqlFunctions。.ToList() 可能会很慢并占用大量内存,但它是一个解决方案。 (2认同)