Почему не там никакие дополнительные методы LINQ на RepeaterItemCollection несмотря на то, что он реализует IEnumerable?

Почему не там никакие дополнительные методы LINQ на RepeaterItemCollection несмотря на то, что он реализует IEnumerable?

Я использую Linq для объектов в другом месте в том же классе. Однако, когда я пытаюсь сделать так с RepeaterItemCollection, они не доступны. У меня создалось впечатление, что дополнительные методы LINQ были доступны классам та реализация IEnumerable.

Что я пропускаю?

12
задан FrankTheTank 6 July 2010 в 16:49
поделиться

3 ответа

Он реализует IEnumerable , но не IEnumerable .

Это не значит, что вы не можете его использовать - это часть того, для чего предназначены OfType и Cast , создание общей последовательности из неуниверсальной:

var filtered = items.Cast<RepeaterItem>()
                    .Where(...) // Or whatever
                    .ToList();

В этом случае Cast более подходит, чем OfType , поскольку вы должны быть уверены, что он будет содержать только значения RepeaterItem . Обратите внимание, что Cast - это то, что используется, если вы указываете тип переменной диапазона в выражении запроса, поэтому это тоже будет работать:

var query = from RepeaterItem item in items
            where item.ItemType == ListItemType.SelectedItem
            select item.DataItem;
22
ответ дан 2 December 2019 в 06:07
поделиться

Согласно MSDN , он имеет следующие 4 метода расширения:

  • AsParallel ()
  • AsQueryable ()
  • Cast ()
  • OfType ()
1
ответ дан 2 December 2019 в 06:07
поделиться

Для работы с LINQ потребуется реализовать универсальный IEnumerable <> , чего нет.

Однако вы можете сначала «привести» его к нужному типу с помощью метода расширения Cast <> .

2
ответ дан 2 December 2019 в 06:07
поделиться
Другие вопросы по тегам:

Похожие вопросы: