Простой вопрос linq: использование linq для получения массива свойств - PullRequest
11 голосов
/ 17 мая 2010

Допустим, у нас есть простой класс

public class Foo
{
    public string FooName;
}

Теперь мы хотим поработать над этим.

public void SomeCallerMethod(List<Foo> listOfFoos)
{
    string[] fooNames = listOfFoo. // What to do here?
}

Если бы я даже знал, какой метод вызывать, я бы, наверное, нашел остальные кусочки.

1 Ответ

21 голосов
/ 17 мая 2010

Вы хотите преобразовать список вашего класса в массив строк. Идеальный метод для этого - Select, который работает с каждым элементом перечисляемого элемента и создает новый перечисляемый тип на основе возвращаемого вами типа.

Вам нужно поместить лямбда-выражение в метод select, который возвращает имя, которое будет просто «для каждого элемента выберите имя».

Затем вам нужно преобразовать вывод в массив.

string[] fooNames = listOfFoos.Select(foo => foo.FooName).ToArray();

Или, используя другой синтаксис:

string[] fooNames = (from foo in listOfFoos
                     select foo.FooName).ToArray();
...