2010-06-05 79 views
2

我想弄清楚如何编写一个LINQ查询,将返回子集合“名称”属性作为一个字符串。LINQ子查询子集合到字符串

我有一个BO有一个“选项”属性,其中的选项是“命令”对象中每个选项的“名称”属性。

我想结果看起来像

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

我希望这是有道理的。感谢任何和所有的帮助!

+0

你可以发布你的查询中涉及的类的类定义吗?我认为这会让你的问题更清楚。 – 2010-06-05 21:14:00

回答

0

您可以使用集合:

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

注意,这会产生一个新的字符串为每操作,所以如果你的选项列表很长,你最好在StringBuilder上使用老派的方法

+0

真棒,谢谢! – bill 2010-06-05 21:53:06

3

虽然Aggregate将工作它有O(n )的表现。如果您需要更好的性能,您可以使用string.Join。不幸的是这种方法不接受IEnumerable<string>,所以你也必须使用ToArray得到你想要的东西:

string.Join(", ", options.Select(o => o.Name).ToArray())