c# - 使用 c# lambda 将 NameValueCollection 转换为查询字符串是否有效?

标签 c# performance lambda query-string

在研究如何将 NameValueCollection 转换为查询字符串时,我遇到了不同的方法。我很好奇更短的 lambda 语法是否尽可能高效。

How to convert NameValueCollection to a (Query) String使用迭代函数。

public static String ConstructQueryString(NameValueCollection parameters)
{
    List<String> items = new List<String>();

    foreach (String name in parameters)
        items.Add(String.Concat(name, "=", System.Web.HttpUtility.UrlEncode(parameters[name])));

    return String.Join("&", items.ToArray());
}

Join a NameValueCollection into a querystring in C#使用 lambda 表达式,看起来不错,但我不确定它是否是高效代码。

private static string JoinNvcToQs(NameValueCollection qs)
{
    return string.Join("&", Array.ConvertAll(qs.AllKeys, key => string.Format("{0}={1}", HttpUtility.UrlEncode(key), HttpUtility.UrlEncode(qs[key]))));
}

最佳答案

我会这样做:

public static string ConstructQueryString(NameValueCollection parameters)
{
    var sb = new StringBuilder();

    foreach (String name in parameters)
        sb.Append(String.Concat(name, "=", System.Web.HttpUtility.UrlEncode(parameters[name]), "&"));

    if (sb.Length > 0)
        return sb.ToString(0, sb.Length - 1);

    return String.Empty;
} 

这样你创建的对象更少(必须由垃圾收集器清理)

关于c# - 使用 c# lambda 将 NameValueCollection 转换为查询字符串是否有效?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1667150/

相关文章:

python - 在 Python 中使用模查找素数

c# - Lambda 表达式参数

c# - 强制 ErrorText 显示在 DataGridView 中

c# - 是否可以从 .net 核心应用程序中的 appsettings.json 文件导入 System.Type?

c# - 单击有效链接时,ASP.Net 没有 URL 重定向

java - 如何提高 Java 语言中 ComponentColorModel 创建的 BufferedImage 的绘制性能?

mysql - 为什么我们将一个mysql表分成许多较小的表?

c# - .NET 应用程序启动速度非常慢 - cryptnet.dll 试图访问百慕大的 IP

javascript - 使用 ULP 比较 double (最后一位的单位)

java - 如何使用 Stream API 从对象中检索嵌套列表?