1

我有带有Name(string) 和Number(int) 列的员工表。

我可以为任何事情搜索员工。所以,

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

如何将数字列转换为字符串?

谢谢你。

4

1 回答 1

5

问题是 SQLLite linq 不知道是什么ToString()- 这是一个可以被覆盖以执行任何操作的 C# 方法。你应该使用SqlFunctions

var query = cnn.Table<Employees>()
               .Where(x => x.Name.Contains(search) ||              
                           SqlFunctions.StringConvert((int)x.Number).Contains(search));

另一种解决方案是在之前添加.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));
于 2016-08-04T08:49:09.043 回答