class DynamicLinq { static void Main()//查询动态元素的集合 动态代码的约束 { var list = new List<dynamic> { 50, 5m, 5d, 3 }; //Count = 4 var query = from number in list where number > 4 //50 5 5.0 select (number / 20) * 10; //{System.Linq.Enumerable.WhereSelectListIterator<object,object>} foreach (var item in query) //item 20 2.5 2.5 { Console.WriteLine(item); } } }
LINQ与dynamic的交互不会导致任何损失。可以拥有一个以dynamic为元素类型的强类型
集合,你还可以使用扩展方法、Lambda表达式甚至查询表达式。该集合可以包含不同类型的对象,它们在执行时将表现出恰当的行为。
将打印20、2.50和2.5。将元素除以20再乘以10,可以展示decimal和double的区别:
decimal类型将以非规范化的方式保留精度,因此显示的为2.50而非2.5。第一个值为整形,
因此将使用整型的除非,结果为20而非25。
输出
20
2.50
2.5