En recherchant comment convertir un NameValueCollection en une chaîne de requête, j'ai rencontré différentes méthodes. Je suis curieux de savoir si la syntaxe lambda plus courte est aussi efficace qu'elle pourrait l'être.Convertit un NameValueCollection en une chaîne de requête utilisant un C# lambda efficace?
How to convert NameValueCollection to a (Query) String en utilisant une fonction d'itération.
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# utilise une expression lambda, qui a l'air bien, mais je ne suis pas sûr que ce soit un code efficace.
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]))));
}
Pour ceux (comme moi) qui a trébuché sur cela comme une méthode générale de générer l'URL à partir de NameValueCollection, cela ne fonctionne pas correctement pour les paramètres avec plusieurs valeurs. Astuce: boucle sur 'parameters.GetValues (key)'. – mcNux