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

时间:2016-08-04 08:14:27

标签: c# uwp sqlite-net sqlite.net

我有一个包含Name(字符串)和Number(int)列的Employees表。

我可以为员工寻找任何东西。所以,

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

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

谢谢。

1 个答案:

答案 0 :(得分:4)

问题是SQLLite linq不知道什么是ToString() - 这是一个C#方法,可以覆盖它来做任何事情。您应该使用SqlFunctions

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

另一种解决方案可以是在.ToList()之前添加AsEnumerable() / where,但是过滤将在c#而不是数据库中进行

还可以:

var query = cnn.Table<Employees>()
               .Where(x => x.Name.Contains(search) || x.Number > 0)
               .AsEnumerable()
               .Where( x => x.Number.ToString().Contains(search));