我正在尝试重构当前使用反射的查询:
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;
这可能吗? ...并且没有兴趣,它是否更快,还是动态运行时使用反射?
谢谢,
艾伦
答案 0 :(得分:2)
动态类型在引擎盖下使用反射,因此它不会快得多。因此,我认为您的Linq-To-Sql表达式应该可以正常工作。你可以查看blog post。它接缝DLR只是为了让你的代码更具可读性。