linq подзапрос дочерней коллекции в строку - PullRequest
2 голосов
/ 06 июня 2010

Я пытаюсь выяснить, как написать запрос linq, который будет возвращать свойство "name" дочерних коллекций в виде строки.

У меня есть BO, у которого есть свойство "options", где опции - это свойство "name" каждой опции в объекте "order".

Я бы хотел, чтобы результат выглядел примерно так:

order.id = 12312
order.date = 12/03/10
order.options = "Option 1 Name, Option 2 Name, Option 3 Name"

Надеюсь, это имеет смысл. спасибо за любую помощь!

Ответы [ 2 ]

3 голосов
/ 06 июня 2010

Хотя Aggregate будет работать, он имеет производительность O (n 2 ). Если вам нужна лучшая производительность, вы можете использовать string.Join. К сожалению, этот метод не принимает IEnumerable<string>, поэтому вы также должны использовать ToArray, чтобы получить то, что вы хотите:

string.Join(", ", options.Select(o => o.Name).ToArray())
0 голосов
/ 06 июня 2010

Вы можете использовать Aggregate:

options.Aggregate((current, next) => current + ", " + next);

Обратите внимание, что при каждой операции создается новая строка, поэтому, если ваш список опций длинный, вам лучше использовать подход старой школы с StringBuilder

...