У меня есть список Foo.
Foo имеет строковое свойство с именем Bar.
Я хотел бы использовать LINQ, чтобы получить строку [] значений отчетливый для Foo.Bar в List of Foo.
Как я могу это сделать?





Попробуй это:
var distinctFooBars = (from foo in foos
select foo.Bar).Distinct().ToArray();
Пожалуйста, объясните, что вы имеете в виду.
У меня есть список Foo. У Foo есть строковое свойство с именем Bar and Coke
Это должно сработать, если вы хотите использовать плавный паттерн:
string[] arrayStrings = fooList.Select(a => a.Bar).Distinct().ToArray();
Я бы выбрал лямбды ... приятнее
var bars = Foos.Select(f => f.Bar).Distinct().ToArray();
работает так же, как и то, что опубликовал @lassevk.
Я бы также добавил, что вы, возможно, захотите воздержаться от преобразования в массив до последней минуты.
LINQ выполняет некоторую оптимизацию за кулисами, запросы остаются в форме запроса до тех пор, пока явно не потребуются. Таким образом, вы можете сначала встроить в запрос все, что вам нужно, чтобы любая возможная оптимизация применялась полностью.
Под оценкой я подразумеваю запрос чего-то, что явно требует оценки, например «Count ()» или «ToArray ()» и т. д.
Разве вы не можете сделать что-то вроде:
var strings = (from a in fooList select a.Bar).Distinct();
string[] array = strings.ToArray();
Могу ли я получить другую недвижимость в том же?