使用 System.Linq.Dynamic.Core 将结果转换为自定义 class

Cast result to custom class with System.Linq.Dynamic.Core

我正在尝试使用 System.Linq.Dynamic.Core 将结果类型转换为自定义 class,但出现异常:

System.InvalidCastException: 'Unable to cast object of type '<>f__AnonymousType0`2[System.Int32,System.Int32]' to type 'MyClass

我的代码是:

class MyClass
{
    public int LangId { get; set; }
    public int GroupId { get; set; }
}

var fields = "new(LangId AS LangId,TranslateId AS GroupId)";
context.Table.Select(fields).ToDynamicListAsync<MyClass>();

我是否错误地理解了泛型方法 ToDynamicListAsync 应该做什么,或者我在其他地方的代码中有另一个错误?

我能做到吗? (将 dynamic[] 结果类型转换为 custom_object[]?)

我试图用反射做一些奇怪的事情然后我偶然发现了解决方案:

var rows = await context.Table.Select(typeof(MyClass), fields).ToDynamicListAsync<MyClass>();

希望对其他人有所帮助。

我想你也可以使用这个代码?

var rows = await context.Table.Select<MyClass>(fields).ToDynamicListAsync<MyClass>();

此扩展方法也在DynamicQueryableExtensions.cs

中定义