Преобразование общего списка в BindingList‹T›

У меня есть объект BindingList, который прикреплен к DataGridView.

BindingList<FilesToProcessDataModels> Listfiles = new BindingList<FilesToProcessDataModels>();
dataGridFiles.DataSource = Listfiles;

Я хочу отфильтровать список элементов по заданному условию в разделе «Где». как показано ниже:

dataGridSheets.DataSource = Listfiles.Where(i => i.Status == FileStatus.NotProcessed).ToList();

Вышеприведенный код работает нормально, но я хочу назначить результат фильтра объекту того же типа [Listfiles] вместо datagrid,

Когда я делаю это:

Listfiles = Listfiles.Where(i => i.Status == FileStatus.NotProcessed).ToList();

это дает следующую ошибку

[Невозможно неявно преобразовать тип «System.Collections.Generic.List в BindingList»]

Как я могу преобразовать общий список в BindingList<FilesToProcessDataModels>?


person Zeeshanef    schedule 05.12.2013    source источник
comment
Дубликат: stackoverflow.com/questions/14953461/   -  person Marton    schedule 05.12.2013


Ответы (3)


ниже приведен стандартный способ - хотя Google должен легко это показать - даже на SO:

Преобразовать IList‹T› в BindingList‹T›

var listFiles= new List<FilesToProcessDataModels>();
var listBindingFiles = new BindingList<FilesToProcessDataModels>(listFiles);
person jim tollan    schedule 05.12.2013
comment
На самом деле я использую производный класс от BindingList. SortableBindingList‹T› : BindingList‹T›. Я только что вызвал два базовых конструктора из производного класса 1. 'public SortableBindingList (коллекция IList‹T›) : base (коллекция) {}' 2. 'public SortableBindingList() : base(){}'. Теперь он работает отлично. Спасибо - person Zeeshanef; 07.12.2013

Нравится:

var yourList = new List<FilesToProcessDataModels>();
var listBinding = new BindingList<FilesToProcessDataModels>(yourList);
person Marton    schedule 05.12.2013
comment
@jimtollan Да, очень жаль, что Zeeshanef не потратил 20 секунд на поиск в Google (или SO), прежде чем создавать новый вопрос. - person Marton; 05.12.2013

Listfiles = Listfiles.Where(i => i.Status == FileStatus.NotProcessed).ToList();

Я думаю, вы определили ListFiles как BindingList‹> немного, теперь вы пытаетесь назначить ему List‹>.

Вот причина этой ошибки

person Bond Zini    schedule 20.08.2015