.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
Post a Comment