Konversi daftar objek ke array salah satu properti objek

133

Katakanlah saya memiliki kelas berikut:

public class ConfigItemType
{
    public string Name { get; set; }
    public double SomeOtherThing { get; set; }
}

dan kemudian saya membuat daftar kelas berikut ( List<ConfigItemType> MyList)

Sekarang saya punya metode dengan tanda tangan berikut:

void AggregateValues(string someUnrelatedValue, params string[] listGoesHere)

Bagaimana saya bisa cocok MyListdengan listGoesHeremenggunakan nilai ConfigItemType.Namesebagai array string params?

Saya cukup yakin bahwa Linq dapat melakukan ini .... tetapi MyListtidak memiliki selectmetode di atasnya (yang akan saya gunakan).

Gunung berapi
sumber

Jawaban:

278

Anda sedang mencari

MyList.Select(x=>x.Name).ToArray();

Karena Selectmerupakan metode ekstensi, pastikan untuk menambahkan namespace itu dengan menambahkan a

using System.Linq

ke file Anda - maka akan muncul dengan Intellisense.

Gelas pecah
sumber
Itulah yang saya pikirkan juga. Tetapi Select tidak muncul di intellisense.
Vaccano
GAAAAAAA! Saya melewatkan linq termasuk!
Vaccano
1
Anda perlu menggunakan System.Data.Linq; kemudian ikuti jawaban BrokenGlass
Rami Shareef
1
Aku bodoh! Baiklah Perwakilan gratis untuk membantu saya mencari tahu.
Vaccano
solusi fantastis. Saya ingin mengakses String "id" di Object-List. Bekerja dengan sempurna List<String> somestringlist = myobjectlist.Select(x => x.id).ToList();
Marty_in_a_Box
19

Saya cukup yakin bahwa Linq dapat melakukan ini .... tetapi MyList tidak memiliki metode pilih di atasnya (yang akan saya gunakan).

Ya, LINQ dapat melakukan ini. Sederhana saja:

MyList.Select(x => x.Name).ToArray();

Kemungkinan besar masalahnya adalah Anda tidak memiliki referensi System.Core, atau Anda kehilangan usingarahan untuk System.Linq.

jason
sumber
6

Ini juga harus bekerja:

AggregateValues("hello", MyList.ConvertAll(c => c.Name).ToArray())
Shadow Wizard adalah Telinga Untuk Anda
sumber
6

Untuk semua orang yang terjebak dengan .NET 2.0, seperti saya, coba cara berikut (berlaku untuk contoh di OP):

ConfigItemList.ConvertAll<string>(delegate (ConfigItemType ci) 
{ 
   return ci.Name; 
}).ToArray();

di mana ConfigItemList adalah variabel daftar Anda.

Spyros
sumber
Terima kasih telah memposting untuk kerumunan .NET 2.0!
webworm