我刚刚发现我不能像delegate
和action
那样流利,而另一个我想要的......
我有一个IEnumerable<T>
我想使用委托函数转换为IEnumerable<object>
,该函数创建object
作为匿名对象。 扩展方法在这里会派上用场还是已经存在?
这(或类似的东西)应该是可能的吗?
IEnumerable<SomeBllObject> list;
IEnumerable<object> newList = list.Transform(x => return new {
someprop = x.SomeProp,
otherprop = x.OtherProp
});
答案 0 :(得分:8)
如果您使用的是.NET 4,那么您刚刚描述了Select
方法:
IEnumerable<object> newList = list.Select(x => new {
someprop = x.SomeProp,
otherprop = x.OtherProp
});
对于.NET 3.5,您需要转换委托的结果,因为它没有通用的协方差:
IEnumerable<object> newList = list.Select(x => (object) new {
someprop = x.SomeProp,
otherprop = x.OtherProp
});
或者使用隐式类型的局部变量并获得强类型序列:
var newList = list.Select(x => new {
someprop = x.SomeProp,
otherprop = x.OtherProp
});