2010-06-05 2 views
2

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

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

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

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

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

+0

Не могли бы вы опубликовать определение класса для классов, участвующих в вашем запросе? Я думаю, это поможет сделать ваш вопрос более ясным. –

ответ

0

Вы можете использовать Совокупные:

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

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

+0

awesome, спасибо! – bill

3

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

string.Join(", ", options.Select(o => o.Name).ToArray()) 
Смежные вопросы