Reputation: 5552
I have a problem where I need to extract a query string parameter from a url. The parameter could be either "Territory"
or "territory"
or other upper/lower case variations of that word. Although the following works for the first two cases I wonder if there is a better way?
IDictionary<string, string> queryString = HtmlPage.Document.QueryString;
if (queryString.ContainsKey("territory"))
{
ish.SetDefaultRegion(int.Parse(queryString["territory"]));
// do something (the same something as below)
}
else if (queryString.ContainsKey("Territory"))
{
ish.SetDefaultRegion(int.Parse(queryString["Territory"]));
// do something (the same something as above)
}
I would prefer to insert the query string into the dictionary ignoring case (ie. if the user accidentally typed "TERRITORY"
this code would fail, so how can I just test that the word exists regardless of casing?
Upvotes: 7
Views: 7220
Reputation: 4413
If your QueryString Object is not a dictionary object but instead is something such as a NameValueCollection...
IDictionary<string, string> queryString = QueryString.AllKeys.ToDictionary(k => k.ToLowerInvariant(), k => QueryString[k]);
Upvotes: 2
Reputation: 98776
Use a dictionary with a case-insensitive key comparer:
var queryParams = new Dictionary<string, string>(
HtmlPage.Document.QueryString,
StringComparer.InvariantCultureIgnoreCase
);
if (queryParams.ContainsKey("territory")) {
// Covers "territory", "Territory", "teRRitory", etc.
}
Upvotes: 14
Reputation: 2291
Hello it can be also TeRriTory, in the querystring do a .Tolower()
Upvotes: 0