将 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' 类型,您可以 可以 将其传递给另一个方法。