如何将键与值连接?

时间:2011-06-13 13:30:08

标签: c# linq

我正在尝试创建一个由键后跟其值组成的字符串,这样字符串看起来像:

  

键;值,密钥;值,密钥;值

到目前为止,我尝试使用concat:

var originalKeyValues = entity.ChangeTracker.OriginalValues.Keys.Concat(
    entity.ChangeTracker.OriginalValues.Values).ToString();

......但这似乎没有产生我想要的东西。

KeysValues都是Dictionary<string, object>

4 个答案:

答案 0 :(得分:6)

string result=list.Select(w=>w.Key+";"+w.Value).Aggregate((c,n)=>c+","+n);

答案 1 :(得分:3)

我会这样做:

var x = new Dictionary<string, string> { { "key", "value" }, { "key2", "value2" } };

Console.WriteLine(
    String.Join(",", x.Select(d => String.Format("{0};{1}", d.Key, d.Value)))
);

从字典中选择一个可枚举的字符串,然后按,加入列表。

输出:key;value,key2;value2

答案 2 :(得分:1)

var originalKeyValues = entity.ChangeTracker.OriginalValues
    .Select(OV => OV.Key + ";" + OV.Value)
    .Aggregate((acc, next) => acc + "," + next));

我认为(未经测试)。

答案 3 :(得分:1)

除了上面提到的那些:

result = (from a in list select a.Key + ";" + a.Value).Aggregate((current, next) => current + "," + next);

我们也可以尝试使用简单的for循环而不使用linq:

foreach (KeyValuePair<String, String> a in list)
            result += a.Key + ";" + a.Value + ",";

或者我们可以使用String.Join的.NET 4功能:

result = String.Join(",", (from a in list select a.Key + ";" + a.Value));