Почему я не могу использовать LINQ на ListView. SelectedItems?

Вы можете использовать каждый метод:

[1,2,3].every(function(el) {
    return !(el === 1);
});

ES6

[1,2,3].every( el => el !== 1 )

для использования в старых браузерах:

if (!Array.prototype.every)
{
  Array.prototype.every = function(fun /*, thisp*/)
  {
    var len = this.length;
    if (typeof fun != "function")
      throw new TypeError();

    var thisp = arguments[1];
    for (var i = 0; i < len; i++)
    {
      if (i in this &&
          !fun.call(thisp, this[i], i, this))
        return false;
    }

    return true;
  };
}

больше подробности здесь .

10
задан GEOCHET 28 July 2009 в 12:47
поделиться

3 ответа

Причина в том, что SelectedItems типизирован для коллекции, которая реализует IEnumerable. Метод расширения Select привязан к IEnumerable . Следовательно, это не будет работать с SelectedItems.

Чтобы решить эту проблему, используйте метод расширения .Cast, чтобы получить соответствующий тип, и он должен появиться

ListView.SelectedItems.Cast<SomeType>.Select(...)
25
ответ дан 3 December 2019 в 14:34
поделиться

Он реализует IEnumerable, а не IEnumerable - все запросы LINQ построены вокруг универсального интерфейса IEnumerable , чтобы обеспечить безопасность типов и общий вывод - особенно при работе с анонимные типы.

Вместо этого вы можете использовать следующее:

myListView.SelectedItems.Cast<ListViewItem>.Select( ... );
6
ответ дан 3 December 2019 в 14:34
поделиться

Есть ли у вас «using System.Linq» в верхней части файла?

Это строго типизированная универсальная коллекция? Если нет, вам нужно использовать метод расширения Cast <>.

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

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