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));