Нет ConvertAll для LinkedList <T>? - PullRequest
       31

Нет ConvertAll для LinkedList <T>?

1 голос
/ 09 апреля 2009

У кого-нибудь есть метод расширения для быстрого преобразования типов в LinkedList<T> с использованием Converter<TInput, TOutput>?

Я немного удивлен, где же ConvertAll<TOutput>(delegate)?

Ответы [ 3 ]

12 голосов
/ 09 апреля 2009

Эквивалент ConvertAll в методах расширения для Linq называется Select!

var result = myLinkedList.Select(x => FancyCalculationWith(x))
0 голосов
/ 09 апреля 2009

Как говорит tvanfosson , можно Cast<T>, но если вы хотите избежать InvalidCastException, вы можете использовать метод расширения OfType<T>, который будет молча проходить и элементы в списке, которые не преобразуются в тип указанного вами параметра универсального типа.

0 голосов
/ 09 апреля 2009

Зависит от того, что вы хотите из него получить, но вы можете использовать Cast, а затем перечислять получающийся IEnumerable.

  public class Foo
  {
    ...
  }

  public class Bar : Foo
  {
    ...
  }

  var list = new LinkedList<Bar>();
  .... make list....

  foreach (var foo in list.Cast<Foo>())
  {
      ...
  }
...