一行 LINQ 将 string[] 展平为字符串?
我想出了下面的 foreach 但我希望这可以在一行中完成..也许 linq ?任何想法将不胜感激。
foreach (string item in decoder.AllKeys)
{
message += String.Format("{0}: {1} ;", item, decoder[item]);
}
I came up with the foreach below but I am hoping this can be accomplished in one line.. maybe linq? Any ideas would be appreciated.
foreach (string item in decoder.AllKeys)
{
message += String.Format("{0}: {1} ;", item, decoder[item]);
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(6)
BCL 中的 String 类已经支持这一点。这是使用 String 类实现此目的的一个衬垫。如果 BCL 操作可用的话,我总是会使用 BCL 操作,因为考虑到 MS 人员已经煞费苦心地优化了这样一个关键的类。
以下是此方法所有变体的 MSDN 链接 - http://goo.gl/kmwfYt
The String class from BCL already supports this. Here is a one liner to achieve this using String class. I would always use the BCL operation if it's available there considering the MS guys would have already taken the pain to optimize such a crucial class.
Here is the link to the MSDN for all the variants of this method - http://goo.gl/kmwfYt
如果您使用的是 .NET 4.0,则可以使用以下方法:
如果您尚未使用 .NET 4.0,则需要将集合转换为数组:
If you're in .NET 4.0, you can use this:
If you're not on .NET 4.0 yet, you need to convert the collection to an array:
这应该有效。
This should work.
如果您已经像我一样在 IEnumerable 上有一个 Join 扩展方法:
那么剩下的只是一句话:
请注意,如果您不使用 .NET 4,那么您可以将扩展方法的实现替换为任何适用的方法你的版本。
编辑:
更好的是,创建以下扩展方法:
并按如下方式调用它:
除了在 NameValueCollection 或任何解码器上放置扩展方法之外,您不会得到比这更多的一行:)
If you already have a Join extension method on IEnumerable like I have:
then the rest is just a one-liner:
Note that if you're not using .NET 4, then you can replace the implementation of the extension method to whatever works for your version.
EDIT:
Even better, create the following extension method:
and call it as follows:
you won't get more one-line than that, other than putting an extension method on NameValueCollection, or whatever decoder is :)