.net - Utility to combine querystrings? -


is there utility combine querystrings? i'm looking like:

input: combine("test=a&test2=b", "test3=c") result: "test=a&test2=b&test3=c"

input: combine("test=a&test2=b", "") result: "test=a&test2=b"

input: combine("", "test3=c") result: "test3=c"

and maybe weird ones:

input: combine("&test=a&test2=b", "?test3=c") result: "test=a&test2=b&test3=c"

i use following class me modify , set query strings. while doesn't solve exact problem, can use , add more functions of own accomplish whatever want. find handy treat query strings idictionary when want modify them.

public static class querystringextensions {     /// <summary>     /// creates dictionary query string or other parameter collection     /// </summary>     /// <param name="querystring"></param>     /// <returns></returns>     public static idictionary<string, string> todictionary(this namevaluecollection querystring)     {         var dict = new dictionary<string, string>();         foreach (string key in querystring.keys)         {             dict[key] = querystring[key];         }         return dict;     }      /// <summary>     /// generates query string dictionary     /// </summary>     /// <param name="dictionary"></param>     /// <returns></returns>     public static string toquerystring(this idictionary<string, string> dictionary)     {         if (dictionary.count == 0) return "";         var items = new list<string>();         foreach (string key in dictionary.keys)         {             items.add(key + "=" + dictionary[key]);         }         return "?" + items.concatenate("&");     }      /// <summary>     /// generates query stirng dictionary using keys in keys parameter     /// </summary>     /// <param name="dictionary"></param>     /// <param name="keys"></param>     /// <returns></returns>     public static string toquerystring(this idictionary<string, string> dictionary, ienumerable<string> keys)     {         var items = new list<string>();         foreach (string key in dictionary.keys.intersect(keys))         {             items.add(key + "=" + dictionary[key]);         }         if (items.count == 0) return "";         return "?" + items.concatenate("&");     }      /// <summary>     /// joins enumerable around seperator.     /// </summary>     /// <typeparam name="t"></typeparam>     /// <param name="input"></param>     /// <param name="seperator"></param>     /// <returns></returns>     public static string concatenate<t>(this ienumerable<t> input, string seperator)     {         var ar = input.select(i => i.tostring()).toarray();         return string.join(seperator, ar);     } } 

Comments

Popular posts from this blog

javascript - Enclosure Memory Copies -

php - Replacing tags in braces, even nested tags, with regex -