Как перебрать две коллекции? - PullRequest
1 голос
/ 11 февраля 2011

Я бы хотел использовать для каждого цикла итерацию по двум коллекциям. Моя первая идея была:

foreach (объект o в a.Concat (b)) {
o.DoSomething (); }

Но проблема в том, что не все Коллекции поддерживают Concat. Так что же делать?

Ответы [ 2 ]

2 голосов
/ 11 февраля 2011

Некоторые устаревшие типы коллекций реализуют только IEnumerable, а не IEnumerable<T>, и поэтому не имеют метода расширения Concat. Вы можете решить эту проблему, сначала воспользовавшись методом Enumerable.Cast<T> и указав требуемый общий тип, затем он будет работать с Concat.

1 голос
/ 11 февраля 2011

Вместо ...

foreach (object o in a.Concat(b)) {
o.DoSomething(); }

Почему не просто?

foreach (object o in a) {
  o.DoSomething();
}
foreach (object o in b) {
  o.DoSomething();
}

Если вы действительно хотите, чтобы они были в одном и том же списке, создайте новый список и добавьте их вместе, прежде чем начинать обработку.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...