C# 将AutoMapper与Xamarin Sqlite一起使用时未找到ToList方法

C# 将AutoMapper与Xamarin Sqlite一起使用时未找到ToList方法,c#,sqlite,xamarin.forms,automapper,C#,Sqlite,Xamarin.forms,Automapper,我正在尝试将AutoMapper的投影方法用于Xamarin Sqlite。我的代码如下所示: var myList = conn.Table<SomeTable>() .Where(w => w.ForeignKeyId == foreignKeyId) .AsQueryable() .ProjectTo<SomeTableDto>() .ToList(); 堆栈跟踪的顶部在下面。如果需要,我可以提供完整的堆栈跟踪,它相当长 at

我正在尝试将AutoMapper的投影方法用于Xamarin Sqlite。我的代码如下所示:

var myList = conn.Table<SomeTable>()
    .Where(w => w.ForeignKeyId == foreignKeyId)
    .AsQueryable()
    .ProjectTo<SomeTableDto>()
    .ToList();
堆栈跟踪的顶部在下面。如果需要,我可以提供完整的堆栈跟踪,它相当长

at Microsoft.Scripting.Interpreter.LightCompiler.CompileMemberInitExpression     (System.Linq.Expressions.Expression expr) [0x00000] in     /Users/builder/data/lanes/3539/f37444ae/source/maccore/_build/Library/Frameworks/Xamarin.iOS.framework/Versions/git/src/mono/mcs/class/dlr/Runtime/Microsoft.Dynamic/Interpreter/LightCompiler.cs:1532  
at Microsoft.Scripting.Interpreter.LightCompiler.CompileNoLabelPush (System.Linq.Expressions.Expression expr) [0x002a7] in /Users/builder/data/lanes/3539/f37444ae/source/maccore/_build/Library/Frameworks/Xamarin.iOS.framework/Versions/git/src/mono/mcs/class/dlr/Runtime/Microsoft.Dynamic/Interpreter/LightCompiler.cs:1660
找不到的方法是ToList()调用。为什么在iOS上找不到该方法

我已经通过下面的操作解决了这个问题,但我很好奇为什么我的初始代码在iOS上不起作用

var someTableList = conn.Table<SomeTable>()
    .Where(w => w.ForeignKeyId == foreignKeyId)
    .ToList();

var myDtoList = Mapper.Map<List<SomeTableDto>>(someTableList);
var someTableList=conn.Table()
.其中(w=>w.ForeignKeyId==ForeignKeyId)
.ToList();
var myDtoList=Mapper.Map(someTableList);

我使用的是AutoMapper 5.1.1、Xamarin Forms 2.3.1和Sqlite net pcl 1.1.2。

我很确定问题出在iOS链接器上。我在以下网站上发现了类似的问题:


感谢@Krumelur为我指明了iOS链接器的方向。如果有人能想到其他任何东西,请告诉我。

您是否将Nuget软件包添加到您的Forms PCL和iOS项目中?我只在我的PCL项目中添加了AutoMapper,而droid或iOS项目中都没有添加AutoMapper。当我将AutoMapper添加到iOS时,它列出了30多个依赖项,还需要安装,所以我很犹豫是否要安装。我上面列出的示例代码都在我的PCL项目中。必须将包添加到本机项目中。我不知道如何以及为什么会引入30个依赖项。@Krumelur,我的PCL项目中有其他使用AutoMapper的数据库方法,它们可以工作。只是ProjectTo和ToList给我带来了问题,而且只有在iOS中。我问题中的代码在Andriod上运行良好,我在Andorid项目中没有包括AutoMapper。好吧,你可以试试看,对吗?它可能是在iOS上剥离内容的链接器。如果你拒绝尝试,你永远不会知道。
var someTableList = conn.Table<SomeTable>()
    .Where(w => w.ForeignKeyId == foreignKeyId)
    .ToList();

var myDtoList = Mapper.Map<List<SomeTableDto>>(someTableList);