IEnumerable функция преобразования преобразования с использованием делегата? - PullRequest
0 голосов
/ 22 марта 2011

Я только что узнал, что я не так хорошо владею delegate и action, а другим, как хотелось бы ...

У меня есть определенный IEnumerable<T>, который я хотел быпреобразовать в IEnumerable<object>, используя функцию делегата, которая создает object в качестве анонимного объекта. Здесь может пригодиться метод расширения или он может уже существовать?

Это (или что-то подобное) должно быть возможным, верно?

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

1 Ответ

8 голосов
/ 22 марта 2011

Если вы используете .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
                  });
...