Преобразовать BindingList <T>в массив T - PullRequest
3 голосов
/ 06 марта 2009

Какой самый простой способ конвертировать BindingList<T> в T[]?

РЕДАКТИРОВАТЬ: я нахожусь на 3.0 для этого проекта, поэтому нет LINQ.

Ответы [ 3 ]

9 голосов
/ 06 марта 2009

Что ж, если у вас есть LINQ (C # 3.0 + .NET 3.5 или LINQBridge ), вы можете использовать .ToArray() - в противном случае просто создайте массив и скопируйте данные.

T[] arr = new T[list.Count];
list.CopyTo(arr, 0);
3 голосов
/ 06 марта 2009

В .Net 2 вы должны использовать .CopyTo() метод на вашем BindingList<T>

1 голос
/ 06 марта 2009

Я изменил этот пост, так как заметил, что вы пометили это как .net2.0. Вы можете использовать List, поскольку он имеет метод ToArray ().

public T[] ToArray<T>(BindingList<T> bindingList) {
    if (bindingList == null)
        return new T[0];

    var list = new List<T>(bindingList);
    return list.ToArray();
}

Примечание. Это действительно менее эффективное решение, чем решение CopyTo, которое показали другие участники. Вместо этого используйте их решение, оно создает два массива, результат и один внутренний для экземпляра List.

...