我想在.SelectMany()
的帮助下在一行中设置一个String。
我有Object
,其中包含Dictionary<String,FileInfo>
。对于这些字典中的每个元素,我希望将Key放入String.Format(),但我总是将"System.Linq.Enumerable+<SelectManyIterator>d__142[System.String,System.Char]"
作为returnvalue。
我的错在哪里?
String.Format(
"All Strings : {0} on {1} ",
MyObject.MyDictionary.Keys.SelectMany(x => x),
MyObject.Type);
答案 0 :(得分:2)
框架3.5
String.Format(
"All Strings : {0} on {1} ",
string.Join(string.Empty, MyObject.MyDictionary.Keys.SelectMany(x => x).ToArray()),
MyObject.Type);
框架4
String.Format(
"All Strings : {0} on {1} ",
string.Join(string.Empty, MyObject.MyDictionary.Keys.SelectMany(x => x)),
MyObject.Type);
答案 1 :(得分:2)
SelectMany将返回一个IEnumerable,这就是为什么,你需要将键变成一个字符串,如下所示:
String.Format("All Strings : {0} on {1}",
String.Join(", ", MyObject.MyDictionary.Select(x => x.Key)),
MyObject.Type);
答案 2 :(得分:0)
非常感谢所有人,我现在用这种方式解决了它:
String.Format("All Strings : {0} on {1} ", String.Join("; ",MyObject.MyDictionary.Keys), MyObject.Type);