2011-02-07 20 views
65

Bir Array'u C# List<object>'a nasıl dönüştürebilirim?Bir Array'ı C# içindeki <object> Listesine nasıl dönüştürebilirim?

+9

Bu sorunun ne olduğunu anlamıyorum .. -5? Gerçekten mi? –

+4

+1, çünkü SO üzerinde bir çoğaltma bulamadığım basit ve etkili bir sorudur. (Downvoters yorum yapmalı veya yeniden düşünmelidir.) Http://stackoverflow.com/questions/1003841/how-do-i-move-the-turtle-in-logo http://blog.stackoverflow.com/2009/06/podcast -58/ – JYelton

+0

[System.Array'ın Listeye Dönüştürülmesi] 'nin olası kopyası (http://stackoverflow.com/questions/1603170/conversion-of-system-array-to-list) –

cevap

89
List<object> list = myArray.Cast<Object>().ToList(); 

dizi elemanlarının bir başvuru türü ise, dışarı bırakabilir .Cast<object>() Cı 4. arayüz ko-varyans yani ilave yana IEnumerable<SomeClass> bir IEnumerable<object> olarak tedavi edilebilir.

List<object> list = myArray.ToList<object>(); 
+28

Sistem kullandığınızdan emin olun. Linq –

+0

Bu sadece VS2015'de çalışıyor mu? VS2012 altında: 'System.Array', 'Cast' için bir tanım içermez ve 'System.Array' türünde bir ilk argümanı kabul eden 'Cast' uzantısı bulunmaz. (Bir kullanma yönergesi veya bir montaj başvurusu eksik mi?)) – ajeh

+0

Bunu yapmanın performans yükü nedir? Herhangi? –

4
private List<object> ConvertArrayToList(object[] array) 
{ 
    List<object> list = new List<object>(); 

    foreach(object obj in array) 
    list.add(obj); 

    return list; 
} 
12

List<object>.AddRange(object[]) hile yapmak gerekir. Her türlü işe yaramaz bellek ayırmadan kaçınacaktır. Ayrıca biraz böyle, Linq kullanabilirsiniz: object[].Cast<object>().ToList()

33

yapıcısı kullanın: new List<object>(myArray)

+2

Bu stil hakkında güzel bir şey, listeyi oluşturup döndürdüğü için daha fazla yöntem ekleyebilirsiniz (ör. '.Contains (userName)'). Bir demet mantıkla cetveli tek satırlık ifadeye dönüştürmek için kullanışlıdır :). – Patrick

8

<> yapıcı IEnumerable nedenle uygulayan şey kabul edebilir Liste ...

 object[] testArray = new object[] { "blah", "blah2" }; 
     List<object> testList = new List<object>(testArray); 
0

başka bir yolu

List<YourClass> list = (arrayList.ToArray() as YourClass[]).ToList(); 
0

Bu, bir nesne göndermenize izin verir:

Dizi öğesi ve liste öğesi aynıdır
private List<object> ConvertArrayToList(dynamic array) 
3

Eğer

List<object> list=myArray.ToList(); 
+0

System.Linq kullanarak kullanarak eklemek zorunda kaldım; çalışmasını sağlamak için; emin değilim neden. – user3752281

0

Ayrıca doğrudan bir dizi liste başlatabilir: Her şey herkesin söylediğini

List<int> mylist= new List<int>(new int[]{6, 1, -5, 4, -2, -3, 9}); 
1

doğru böyledir

int[] aArray = {1,2,3}; 
List<int> list = aArray.OfType<int>().ToList(); 

aArray öğesini bir listeye, listeye döndürür. Ancak yorumların bir sürü eksik büyük şey size sınıf

using System.Collections.Generic; 
using System.Linq; 

umarım bu yardımcı olur üstündeki bu 2 kullanarak ifadeleri olması gerekir olmasıdır!

İlgili konular