将对象/动态转换为匿名类型

时间:2015-07-17 07:54:51

标签: c# entity-framework dynamic casting anonymous-types

我有一个EF查询,它返回一个匿名类型的几个连接表。我将此作为动态传递给另一个函数。有没有办法将动态强制转换为匿名类型的已知匿名类型?如果有办法做到这一点,我会假设将它作为一个对象传递比动态更好,这是正确的吗?

...
var appts = (from a in dbc.tblAppt join b in dbc.tblApptTypes on a.Type equals b.Type select new {a, b}).ToList();
If (appts.Any())
    ProcessAppts(appts);
}

void ProcessAppts(dynamic appts)
{
    var AnonTypeAppts = appts as (new {tblAppt, tblApptTypes}); // This bit here
}

1 个答案:

答案 0 :(得分:3)

没有。匿名类型是......匿名的。您不能像在代码中尝试的那样将变量强制转换为匿名类型。并且最好不要通过其他方法传递它们。他们应该留在里面。而你真的不应该使用dynamic

我建议创建一个真实的' 可以传递给另一种方法的类型。