我正在尝试重构当前使用反射的查询:
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才能使您的代码更具可读性。