将 Object/Dynamic 转换为匿名类型
Casting Object/Dynamic to Anonymous Type
我有一个 EF 查询,其中 returns 几个连接表的匿名类型。我将它作为动态传递给另一个函数。有没有办法将动态转换为已知匿名类型的匿名类型?如果有办法做到这一点,我会假设将其作为对象传递比动态传递更好,这是正确的吗?
...
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
}
没有。匿名类型是……匿名的。您不能像您在代码中尝试的那样将变量转换为匿名类型。最好不要通过其他方法传递它们。它们应该放在里面。你真的不应该为此使用 dynamic
。
我建议创建一个 'real' 类型,您可以 可以 将其传递给另一个方法。
我有一个 EF 查询,其中 returns 几个连接表的匿名类型。我将它作为动态传递给另一个函数。有没有办法将动态转换为已知匿名类型的匿名类型?如果有办法做到这一点,我会假设将其作为对象传递比动态传递更好,这是正确的吗?
...
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
}
没有。匿名类型是……匿名的。您不能像您在代码中尝试的那样将变量转换为匿名类型。最好不要通过其他方法传递它们。它们应该放在里面。你真的不应该为此使用 dynamic
。
我建议创建一个 'real' 类型,您可以 可以 将其传递给另一个方法。