linq子查询子集合到字符串

时间:2010-06-05 21:04:23

标签: c# linq subquery sum

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

我有一个具有“options”属性的BO,其中的选项是“order”对象中每个选项的“name”属性。

我希望结果看起来像

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

我希望这是有道理的。感谢您的帮助!

2 个答案:

答案 0 :(得分:3)

虽然Aggregate将起作用,但它具有O(n 2 )性能。如果您需要更好的性能,可以使用string.Join。很遗憾,此方法不接受IEnumerable<string>,因此您还必须使用ToArray来获取所需内容:

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

答案 1 :(得分:0)

您可以使用Aggregate:

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

请注意,这会为每个操作生成一个新字符串,因此如果您的选项列表很长,那么最好使用StringBuilder的旧学校方法