C# 如何转换字典<;字符串,字符串>;在LINQ中设置字符串的属性?

C# 如何转换字典<;字符串,字符串>;在LINQ中设置字符串的属性?,c#,string,linq,aggregate-functions,C#,String,Linq,Aggregate Functions,我有一个字典形式的键/值集合 如何将其转换或聚合为属性字符串: key1="value1" key2="value2" key3="value3" 我相信这可以通过使用聚合函数来实现,但是,我发现关于这个特定扩展方法的文档令人困惑。非常感谢您的帮助。我会使用: .NET 4: var text = string.Join(" ", dictionary.Select(pair => string.Format("{0}={1}",

我有一个
字典形式的键/值集合

如何将其转换或聚合为属性字符串:

key1="value1" key2="value2" key3="value3"
我相信这可以通过使用聚合函数来实现,但是,我发现关于这个特定扩展方法的文档令人困惑。非常感谢您的帮助。

我会使用:

.NET 4:

var text = string.Join(" ", 
              dictionary.Select(pair => string.Format("{0}={1}",
                                pair.Key, pair.Value));
.NET 3.5(其中
string.Join
具有较少的重载)

如果需要执行任何转义,请在
string.Format
调用中执行。当然,您不需要使用
string.Format
-您可以使用:

var text = string.Join(" ", dict.Select(pair => pair.Key + "=" + pair.Value));
这取决于你觉得哪个更可读。(性能差异可以忽略不计。)

var dict=new Dictionary
{
{“1”,“第一”},
{“2”,“第二”}
};
var result=dict.Aggregate(新的StringBuilder(),
(sb,kvp)=>sb.AppendFormat(“{0}=\{1}\”,kvp.Key,kvp.Value),
sb=>sb.ToString());

那么您希望字典的键和值以这种方式输出为字符串吗?听起来很简单:

var myDictionary = new Dictionary<string,string>();
//populate Dictionary

//a Dictionary<string,string> is an IEnumerable<KeyValuePair<sring,string>>
//so, a little Linq magic will work wonders
var myAttributeString = myDictionary.Aggregate(new StringBuilder(), (s, kvp) => s.Append(kvp.Key + "=\"" + (kvp.Value ?? String.Empty) + "\" "));

我会尽量避免像那样重复使用字符串连接。。。作为聚合类型的StringBuilder在IMO.+1中可以更好地向我展示如何使用聚合。我将使用双向飞碟的答案,因为它能很好地处理尾随空间,而且对于初学者来说更容易理解。不过,非常感谢!
string.Join(" ", myDict.Select(d => string.Format("{0} = {1}", d.Key, d.Value)))
var dict = new Dictionary<string, string>
                {
                    {"1", "first"},
                    {"2", "second"}
                };

var result = dict.Aggregate(new StringBuilder(),
                            (sb, kvp) => sb.AppendFormat("{0}=\"{1}\" ", kvp.Key, kvp.Value),
                            sb => sb.ToString());
var myDictionary = new Dictionary<string,string>();
//populate Dictionary

//a Dictionary<string,string> is an IEnumerable<KeyValuePair<sring,string>>
//so, a little Linq magic will work wonders
var myAttributeString = myDictionary.Aggregate(new StringBuilder(), (s, kvp) => s.Append(kvp.Key + "=\"" + (kvp.Value ?? String.Empty) + "\" "));
XMLDocument doc = new XMLDocument()
XMLElement myElement = doc.CreateElement("myElement")

foreach(var kvp in myDictionary)
   myElement.SetAttribute(kvp.Key, kvp.Value);