SQLite.Net-PCL 没有这样的函数:ToString
SQLite.Net-PCL No such function: ToString
我有员工 table,其中包含 Name
(string) 和 Number
(int) 列。
我可以搜索任何员工。所以,
var query = cnn.Table<Employees>()
.Where(x => x.Name.Contains(search) ||
x.Number.ToString().Contains(search));
An exception of type 'SQLite.Net.SQLiteException' occurred in SQLite.Net.Platform.WinRT.dll but was not handled in user code
Additional information: no such function: tostring
如何将数字列转换为字符串?
谢谢。
问题是 SQLLite linq 不知道什么是 ToString()
- 那是一个可以重写以执行任何操作的 C# 方法。你应该使用 SqlFunctions
:
var query = cnn.Table<Employees>()
.Where(x => x.Name.Contains(search) ||
SqlFunctions.StringConvert((int)x.Number).Contains(search));
另一种解决方案是在 where
之前添加 .ToList()
/AsEnumerable()
,但随后过滤将发生在 c# 而不是数据库中
也可以:
var query = cnn.Table<Employees>()
.Where(x => x.Name.Contains(search) || x.Number > 0)
.AsEnumerable()
.Where( x => x.Number.ToString().Contains(search));
我有员工 table,其中包含 Name
(string) 和 Number
(int) 列。
我可以搜索任何员工。所以,
var query = cnn.Table<Employees>()
.Where(x => x.Name.Contains(search) ||
x.Number.ToString().Contains(search));
An exception of type 'SQLite.Net.SQLiteException' occurred in SQLite.Net.Platform.WinRT.dll but was not handled in user code
Additional information: no such function: tostring
如何将数字列转换为字符串?
谢谢。
问题是 SQLLite linq 不知道什么是 ToString()
- 那是一个可以重写以执行任何操作的 C# 方法。你应该使用 SqlFunctions
:
var query = cnn.Table<Employees>()
.Where(x => x.Name.Contains(search) ||
SqlFunctions.StringConvert((int)x.Number).Contains(search));
另一种解决方案是在 where
之前添加 .ToList()
/AsEnumerable()
,但随后过滤将发生在 c# 而不是数据库中
也可以:
var query = cnn.Table<Employees>()
.Where(x => x.Name.Contains(search) || x.Number > 0)
.AsEnumerable()
.Where( x => x.Number.ToString().Contains(search));