问题是,具有以下代码段的编译器/ linq或sqlite-net-pcl会做什么?
TableQuery<Foo> tr = connection.Table<Foo>()
.Where(i => i.a > 5 && i.b < 5 && statusList.Contains(i.status));
据我所知,它会像任何普通的sql / dbms一样首先查询简单值(a> 5和b <5),但是在这种情况下contains函数是如何工作的。 它会通过每个结果并手动检查它,将整个东西以某种方式转换为sql语句。如果Foo.status已建立索引,该索引将用于更快地搜索。
其他一些ORM具有特殊的语法或方法链接来执行类似的操作(请参见laravel提供了where方法)