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ć MyList
się do listGoesHere
używania wartości w ConfigItemType.Name
jako tablicy ciągów parametrów?
Jestem prawie pewien, że Linq może to zrobić .... ale MyList
nie ma na to select
metody (której bym użył).
List<String> somestringlist = myobjectlist.Select(x => x.id).ToList();
Tak, LINQ może to zrobić. Po prostu:
Najprawdopodobniej problem polega na tym, że albo nie masz odniesienia do
System.Core
, albo brakuje ciusing
dyrektywy dlaSystem.Linq
.źródło
Powinno to również działać:
AggregateValues("hello", MyList.ConvertAll(c => c.Name).ToArray())
źródło
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.
źródło