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).

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.


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.



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.


Terima kasih telah memposting untuk kerumunan .NET 2.0!
webworm
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.