我正在使用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: Exception。-> System.NotSupportedException:无法编译: Lambda 08-30 15:46:57.210 E/mono (16849):at SQLite.Net.TableQuery
1[T].CompileExpr (System.Linq.Expressions.Expression expr, System.Collections.Generic.List1 queryArgs) 0x007aa in :0.08-30 15:46:57.210 E/mono (16849):at SQLite.Net.TableQuery1[T].CompileExpr (System.Linq.Expressions.Expression expr, System.Collections.Generic.List1 queryArgs) 0x001a5 in :0.08-30 15:46:57.210 E/mono (16849):at SQLite.Net.TableQuery () 0x008 in:008-30 15:46:57.210 E/mono (16849):System.Collections.Generic.List1[T]..ctor (IEnumerable1收集) 0x00073 in /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 (16849):System.Linq.Enumerable.ToListTSource 0x00011 in /User/builder/data/lanes/3540/1cf254db/source/mono/external/referencesource/System.Core/System/Linq/Enumerable.cs:835 08-30 15:46:57.210 E/mono (16849):at SQLiteNetExtensions.Extensions.ReadOperations.GetAllWithChildrenT 0x00015 in /Users/redent/Documents/workspace/sqlite-net-extensions/SQLiteNetExtensions/Extensions/ReadOperations.cs:60
那么,我应该如何使用GetAllWithChildren方法而不让它崩溃呢?文档非常稀少。
额外
这是实现该方法的行
如果是这样的话,在Sqlite中可能不支持lambda表达式--如果是这样的话,有什么可供选择的/如何使用这个方法?
发布于 2016-08-30 15:24:15
因此,看起来Sqlite.Net无法处理嵌套在另一个lamdba表达式中的Lambda表达式。因此,我将我的过滤器改为:
var NewCalls = conn.GetAllWithChildren<DiaryCall>(x => filteredCalls.Contains(x.Id));https://stackoverflow.com/questions/39230916
复制相似问题