【发布时间】:2015-01-28 23:29:28
【问题描述】:
在这里,我将两组查询字符串参数存储到两个不同的名称值集合中。查询字符串参数顺序可能会有所不同,所以我只想对顺序进行排序,然后我需要将名称值集合存储到一个字符串中。
更新代码:
string url1 = @"http://www.somewebsitesampletest.com/dcs7o?data=142248494&dcp=smre&nparam=4567P&email=xxx.com";
string url2 = @"http://www.somewebsitesampletest.com/dcs7o?dcp=smre&data=142248494&email=xxx.com&nparam=4567P";
var NameValueCollection1 = HttpUtility.ParseQueryString(url1);
var NameValueCollection2 = HttpUtility.ParseQueryString(url2);
预期结果: 排序并转换为字符串后,结果应如下所示
string query1 = "data=142248494&dcp=smre&email=xxx.com&nparam=4567P";
string query2 = "data=142248494&dcp=smre&email=xxx.com&nparam=4567P";
【问题讨论】:
-
如果您向我们展示您实际尝试过的内容会更好。
-
我认为 ?& 是错误的网址格式。你也想要排序,但在你预期的结果中,你在电子邮件之前显示 nparam,这是什么排序?
-
你为什么要把它放到 NVC 中呢?似乎您想要做的就是捕获 URI 的查询部分,对吧?所以只需在“?”之后对所有内容进行子串,这样更快更优雅。将所有内容解析到 NVC 中,然后再次将其重组为字符串,这在很多方面都是违反直觉的。
-
我使用 NVC 进行比较。这就是我比较的方式, public bool CompareNameValueCollections(NameValueCollection exp, NameValueCollection rec) { return exp.AllKeys.OrderBy(key => key) .SequenceEqual(rec.AllKeys.OrderBy(key => key)) && exp.AllKeys。全部(key => exp[key] == rec[key]); } 比较后,我向用户显示我比较的所有参数是什么。
标签: c# asp.net .net linq c#-4.0