使用委托的IEnumerable转换扩展函数?

Rop*_*tah 0 .net generics ienumerable extension-methods

我刚刚发现我不是那么流利,delegateaction另一个我想要的......

我有一个IEnumerable<T>我想要转换为IEnumerable<object>使用委托函数创建object为匿名对象.扩展方法在这里会派上用场还是已经存在?

这(或类似的东西)应该是可能的吗?

IEnumerable<SomeBllObject> list;
IEnumerable<object> newList = list.Transform(x => return new {
                        someprop = x.SomeProp, 
                        otherprop = x.OtherProp
                  });
Run Code Online (Sandbox Code Playgroud)

Jon*_*eet 8

如果您使用的是.NET 4,那么您刚刚描述了该Select方法:

IEnumerable<object> newList = list.Select(x => new {
                        someprop = x.SomeProp, 
                        otherprop = x.OtherProp
                  });
Run Code Online (Sandbox Code Playgroud)

对于.NET 3.5,您需要转换委托的结果,因为它没有通用的协方差:

IEnumerable<object> newList = list.Select(x => (object) new {
                        someprop = x.SomeProp, 
                        otherprop = x.OtherProp
                  });
Run Code Online (Sandbox Code Playgroud)

或者使用隐式类型的局部变量并获得强类型序列:

var newList = list.Select(x => new {
                        someprop = x.SomeProp, 
                        otherprop = x.OtherProp
                  });
Run Code Online (Sandbox Code Playgroud)