Przekonwertuj listę obiektów na tablicę jednej z właściwości obiektu


133

Powiedzmy, że mam następującą klasę:

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

a następnie tworzę listę następujących klas ( List<ConfigItemType> MyList)

Teraz mam metodę z następującym podpisem:

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

Jak mogę dopasować MyListsię do listGoesHereużywania wartości w ConfigItemType.Namejako tablicy ciągów parametrów?

Jestem prawie pewien, że Linq może to zrobić .... ale MyListnie ma na to selectmetody (której bym użył).

Odpowiedzi:


281

Szukasz

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

Ponieważ Selectjest to metoda rozszerzenia, upewnij się, że dodajesz tę przestrzeń nazw, dodając rozszerzenie

using System.Linq

do twojego pliku - wtedy pojawi się z Intellisense.


O tym też pomyślałem. Ale Select nie pojawia się w inteligencji.
Vaccano

GAAAAAAA! Brakowało mi linq include!
Vaccano

1
musisz użyć using System.Data.Linq; następnie postępuj zgodnie z odpowiedzią BrokenGlass
Rami Shareef

1
Jestem głupkiem! Ach tak. Bezpłatny przedstawiciel za pomoc w rozwiązaniu tego problemu.
Vaccano

fantastyczne rozwiązanie. Chciałem uzyskać dostęp do ciągu „id” na mojej liście obiektów. Działało idealnie List<String> somestringlist = myobjectlist.Select(x => x.id).ToList();
Marty_in_a_Box

19

Jestem prawie pewien, że Linq może to zrobić .... ale MyList nie ma na niej metody wyboru (której bym użył).

Tak, LINQ może to zrobić. Po prostu:

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

Najprawdopodobniej problem polega na tym, że albo nie masz odniesienia do System.Core, albo brakuje ci usingdyrektywy dla System.Linq.



6

Dla każdego, kto utknął w .NET 2.0, jak ja, wypróbuj następujący sposób (dotyczy przykładu w OP):

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

gdzie ConfigItemList to zmienna listy.


Dziękujemy za wysłanie wiadomości dla tłumu .NET 2.0!
robak sieciowy
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.