从Var转换为动态列表并执行操作

时间:2013-02-19 14:59:57

标签: c# linq generics dynamic var

我有以下类型的代码段。

var PersonList = new List<person>() { 
                new person { Name = "b", Age = 4 },
                new person { Name = "s", Age = 2 },
                new person { Name = "e", Age = 5 },
                new person { Name = "a", Age = 1 },
            }.AsQueryable();

// Now somewhere in usercontrol I am converting that list to dynamic.
dynamic DynaList = PersonList;

// Now below line gives me error when I try to perform any on DynaList.
DynaList.ToList(); // Error - BinderException
DynaList.OrderBy("Name"); // Error - BinderException

为什么动态不转换为其类型运行时?

2 个答案:

答案 0 :(得分:2)

您不能在动态类型上使用扩展方法,就好像扩展方法是实例上的方法一样。请参阅此SO post和此SO post。您必须在基础静态类上使用扩展方法。

答案 1 :(得分:0)

动态类型不支持扩展方法。希望这个Link能解释你原因......