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

时间:2018-09-24 05:29:42

标签: linq dynamic-linq

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

  

System.InvalidCastException:'无法转换类型的对象   “ <> f__AnonymousType0`2 [System.Int32,System.Int32]”以键入“ 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[]吗?)

2 个答案:

答案 0 :(得分:1)

我认为您也可以使用此代码?

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

此扩展方法也在DynamicQueryableExtensions.cs

中定义

答案 1 :(得分:0)

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

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

希望它对其他人有帮助。