繁体   English   中英

如何使用Sqlite.Net扩展筛选器

[英]How do I use Sqlite.Net Extensions Filter

我正在使用Sqlite.Net扩展库从数据库中获取对象。

我有一个Id's列表,我想从我的列表包含该ID的数据库中获取所有对象。

我有以下几点:

var filteredCalls = listOfIds;            
var conn = Databsae.Connection;
var NewCalls = conn.GetAllWithChildren<Call>(x => filteredCalls.Any(y => y == x.Id));

但是此代码返回错误:

[错误]致命异常:System.Reflection.TargetInvocationException:调用的目标引发了异常。 ---> System.NotSupportedException:无法编译:Lambda 08-30 15:46:57.210 E / mono-rt(16849):在SQLite.Net.TableQuery 1[T].CompileExpr (System.Linq.Expressions.Expression expr, System.Collections.Generic.List 1 queryArgs)[0x007aa] :: 0 08-30 15:46:57.210 E / mono-rt(16849):位于SQLite.Net.TableQuery 1[T].CompileExpr (System.Linq.Expressions.Expression expr, System.Collections.Generic.List 1 queryArgs)[0x001a5] :: 0 08-30 15:46:57.210 E / mono-rt(16849):在SQLite.Net.TableQuery 1[T].GenerateCommand (System.String selectionList) [0x0006d] in <filename unknown>:0 08-30 15:46:57.210 E/mono-rt (16849): at SQLite.Net.TableQuery 1 [T] .GetEnumerator()[0x00008 ]::0 08-30 15:46:57.210 E / mono-rt(16849):位于System.Collections.Generic.List 1[T]..ctor (IEnumerable 1集合)中的[0x00073] / Users / builder / data / lanes / 3540 / 1cf254db / source / mono / external / referencesource / mscorlib / system / collections / generic / list.cs:98 08-30 15:46:57.210 E / mono-rt(16849):在System.Linq .Enumerable.ToList [TSource] (IEnumerable 1 source) [0x00011] in /Users/builder/data/lanes/3540/1cf254db/source/mono/external/referencesource/System.Core/System/Linq/Enumerable.cs:835 08-30 15:46:57.210 E/mono-rt (16849): at SQLiteNetExtensions.Extensions.ReadOperations.GetAllWithChildren[T] (SQLite.Net.SQLiteConnection conn, System.Linq.Expressions.Expression / Users / redent中的1 source) [0x00011] in /Users/builder/data/lanes/3540/1cf254db/source/mono/external/referencesource/System.Core/System/Linq/Enumerable.cs:835 08-30 15:46:57.210 E/mono-rt (16849): at SQLiteNetExtensions.Extensions.ReadOperations.GetAllWithChildren[T] (SQLite.Net.SQLiteConnection conn, System.Linq.Expressions.Expression 1过滤器,布尔型递归)[0x00015] /Documents/workspace/sqlite-net-extensions/SQLiteNetExtensions/Extensions/ReadOperations.cs:60

那么我应该如何使用GetAllWithChildren方法而不会崩溃? 该文档非常稀疏

额外

是实现方法

为说明可能lambda表达式不SQLite中支持这里 ,如果是这样的话,什么是另类/是如何被使用这个方法应该?

因此,看起来Sqlite.Net无法应付嵌套在另一个lamdba表达式中的Lambda表达式。 因此,我将过滤器更改为:

var NewCalls = conn.GetAllWithChildren<DiaryCall>(x => filteredCalls.Contains(x.Id));

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM