一种简化提供代码的优雅方法

时间:2015-07-03 09:24:13

标签: c# string list

假设有一个列表:

var rawItems = new List<KeyValuePair<string, string>>()
{
    new KeyValuePair<string,string>("A", "1"),
    new KeyValuePair<string,string>("B", "2"),
    new KeyValuePair<string,string>("C", "3")
};

需要以下列形式构造一个字符串:

A = 1,
B = 2,
C = 3

使用的方法:

List<string> transformedItems = new List<string>();
rawItems.ForEach(item => transformedItems.Add(item.Key + " = " + item.Value));
string result = String.Join("," + Environment.NewLine, transformedItems.ToArray());

如果有人能想出更优雅的方式,我会很高兴。

P.S。:不一定&#34;相同的代码打包在一行&#34;解决方案的类型,而不是另一种方式。

2 个答案:

答案 0 :(得分:11)

也许你会发现这个&#34;优雅&#34;:

var result = string.Join(",\r\n", rawItems.Select(
                                  x => string.Format("{0} = {1}", x.Key, x.Value)));

答案 1 :(得分:2)

我通常为Join定义一个扩展方法(在某个静态类中):

static string StringJoin<T>(this IEnumerable<T> values, string separator)
{
    return string.Join(separator, values);
}

然后您可以按如下方式重写代码:

string result =
    rawItems
        .Select(item => item.Key + " = " + item.Value)
        .StringJoin("," + Environment.NewLine);