2009-03-06 6 views
3

Что является самым простым способом преобразования BindingList<T> в T[]?Преобразование BindingList <T> в массив из T

EDIT: Я использую 3.0 для этого проекта, поэтому LINQ.

+0

Кроме того, вы все равно можете использовать LINQ с .NET 3.0, если у вас есть компилятор C# 3.0 (или VS2008). Просто ссылку LINQBridge. –

ответ

9

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

T[] arr = new T[list.Count]; 
list.CopyTo(arr, 0); 
1

Я изменил это сообщение, так как заметил, что вы отметили это с помощью .net2.0. Вы можете использовать Список, так как он имеет метод 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, показанное другими участниками. Вместо этого используйте свое решение, которое создает два массива, результат и один внутренний экземпляр списка.

+0

Вопрос помечен .net2.0 – annakata

+0

@annakata; * строго говоря, более актуально, является ли это C# 2.0 или C# 3.0, поскольку LINQ по-прежнему доступен с .NET 2.0 + C# 3.0 + несколькими довольно простыми способами и т. д. (или просто LINQBridge). –

+0

@ Tant102 - Я предпочел ваш оригинальный ответ; -p. Подход List немного переборщил и (для больших данных, по крайней мере) немного неэффективен. –

3

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

Смежные вопросы