【发布时间】:2010-08-10 07:17:24
【问题描述】:
我试图避免在我的 lambda 表达式中使用动态类型来对集合进行分组。该类型是在编译时匿名定义的(据我所知是明确的)。我宁愿不将类型定义为成熟的类,因为我在这个单一方法中只使用了几次。
示例代码:
Func<MyData, dynamic> dataGrouping = md => new
{
md.Property1,
md.Property2,
md.Property3
};
var groupedData = myDataCollection.GroupBy(dataGrouping);
虽然这会编译,但它让我在组内没有智能感知或强类型,因为类型是动态的。
我无法将 dataGrouping 的类型指定为 var,因为我在 C# 中,并且收到关于无法将 lambda 表达式分配给隐式类型局部变量的投诉。
我可以在匿名类型上用 GetType() 的结果替换 dynamic 吗?然后我需要在 lambda 中使用它之前的类型,但在我已经进入 lambda 本身之前,我看不到一种有用的方法来处理它。
有没有一种优雅的方式来获取这个匿名类的类型?
【问题讨论】:
标签: c# lambda anonymous-types