我正在尝试重构当前使用反射的查询:

var dbObjects = from d in collection
    where d.GetType().GetProperty("Id").GetValue(d, null) == id
    select d;


我想使用动态类型来访问“ d”上的属性ID,而无需知道编译时“ d”是什么类型。
像这样:

var dbObjects = from (dynamic)d in collection
    where d.Id == id
    select d;


这可能吗?
...并且出于兴趣,它是否更快?还是动态运行时在后台使用反射?

谢谢,

艾伦

最佳答案

动态类型在内部使用反射,因此不会更快。因此,我认为您的Linq-To-Sql表达式应该可以正常工作。您可以检查blog post。似乎只有DLR才能使您的代码更具可读性。

10-08 08:54
查看更多