Искать в BindingList <T>с Linq - PullRequest
       22

Искать в BindingList <T>с Linq

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

Почему это предупреждение?

BindingList<ClassName> lst = List.Select(obj => obj.Number == "NN").ToList<ClassName>();

............................................... ..

List:

BindingList<ClassName> List = new BindingList<ClassName>();

Erro:

System.Collections.Generic.IEnumerable 'не содержит определения для «ToList» и лучшая перегрузка метода расширения «System.Linq.Enumerable.ToList (System.Collections.Generic.IEnumerable)» имеет некоторые недопустимые аргументы

Ответы [ 2 ]

5 голосов
/ 09 февраля 2011

Вы имеете в виду Where вместо Select?

List.Select(obj => obj.Number == "NN")

- это проекция, в которой для каждого элемента в списке возвращается строка "NN" - теперь у вас есть последовательность n-times- "NN";затем вы пытаетесь принудительно ввести это в список ClassName.Затем вы далее пытаетесь разыграть List<ClassName> до BindingList<ClassName>, но между ними нет никакой связи, кроме IList<T>

Я ожидаю, что вы имеете в виду:

BindingList<ClassName> lst = new BindingList<ClassName>(
        List.Where(obj => obj.Number == "NN").ToList());
1 голос
/ 09 февраля 2011

ToList<T>() Метод LINQ преобразует перечисляемое значение в List<T>, а не в BindingList<T>

...