如何将NameValueCollection
中的所有值作为单个字符串键入,
现在我使用以下方法来获取它:
public static string GetAllReasons(NameValueCollection valueCollection)
{
string _allValues = string.Empty;
foreach (var key in valueCollection.AllKeys)
_allValues += valueCollection.GetValues(key)[0] + System.Environment.NewLine;
return _allValues.TrimEnd(System.Environment.NewLine.ToCharArray());
}
使用Linq
的任何简单解决方案?
答案 0 :(得分:8)
您可以使用以下内容:
string allValues = string.Join(System.Environment.NewLine, valueCollection.AllKeys.Select(key => valueCollection[key]));
答案 1 :(得分:1)
这取决于你想如何分离最终字符串中的每个值,但我使用一个简单的扩展方法将任何IEnumerable<string>
组合成一个以值为单位的字符串:
public static string ToValueSeparatedString(this IEnumerable<string> source, string separator)
{
if (source == null || source.Count() == 0)
{
return string.Empty;
}
return source
.DefaultIfEmpty()
.Aggregate((workingLine, next) => string.Concat(workingLine, separator, next));
}
作为如何将其与NameValueCollection
:
NameValueCollection collection = new NameValueCollection();
collection.Add("test", "1");
collection.Add("test", "2");
collection.Add("test", "3");
// Produces a comma-separated string of "1,2,3" but you could use any
// separator you required
var result = collection.GetValues("test").ToValueSeparatedString(",");