Как получить массив значений различных свойств из списков памяти? - PullRequest
4 голосов
/ 03 сентября 2008

У меня есть список Foo.

У Foo есть строковое свойство с именем Bar.

Я хотел бы использовать LINQ , чтобы получить строку [] различных значений для Foo.Bar в списке Foo.

Как я могу это сделать?

Ответы [ 4 ]

5 голосов
/ 03 сентября 2008

Я бы пошла лямбда ... еще лучше

var bars = Foos.Select(f => f.Bar).Distinct().ToArray();

работает так же, как и сообщение @lassevk.

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

LINQ выполняет некоторые оптимизации за кулисами, запросы остаются в форме запросов до тех пор, пока они не потребуются явно. Поэтому вы, возможно, захотите сначала включить в запрос все, что вам нужно, чтобы вся возможная оптимизация была применена в целом.

Под оценкой я имею в виду запрос чего-то, что явно требует оценки, например "Count ()" или "ToArray ()" и т. Д.

3 голосов
/ 03 сентября 2008

Это должно работать, если вы хотите использовать беглый шаблон:

string[] arrayStrings = fooList.Select(a => a.Bar).Distinct().ToArray();
2 голосов
/ 03 сентября 2008

Попробуйте это:

var distinctFooBars = (from foo in foos
                       select foo.Bar).Distinct().ToArray();
0 голосов
/ 03 сентября 2008

Если вы не сможете сделать что-то вроде:

var strings = (from a in fooList select a.Bar).Distinct();
string[] array = strings.ToArray();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...