如果不是,确定两个NameValueCollections对象是否相等的最佳方法是什么.
我正在使用它来确定解析为namevaluecollection的两个查询字符串是否具有相同的键和值,而不管顺序如何.
等于似乎没有你想要的.它似乎检查引用相等,而不是它们是等价的.
应该使用以下方法(使用System.Linq),尽管可能有更有效的方法:
public bool CompareNameValueCollections(NameValueCollection nvc1,
NameValueCollection nvc2)
{
return nvc1.AllKeys.OrderBy(key => key)
.SequenceEqual(nvc2.AllKeys.OrderBy(key => key))
&& nvc1.AllKeys.All(key => nvc1[key] == nvc2[key]);
}
Run Code Online (Sandbox Code Playgroud)
注意:如果订单很重要,可以删除OrderBy语句.如果每个键有多个值,并且无论顺序如何都需要检查值是否相等,那么最后一行可以更改为:
&& nvc1.AllKeys
.All(key => nvc1.GetValues(key)
.OrderBy(val => val)
.SequenceEqual(nvc2.GetValues(key)
.OrderBy(val => val)));
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1438 次 |
| 最近记录: |