c# – Linq-to-sql查询中的动态类型

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

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只是为了让您的代码更具可读性.

点赞