gpt4 book ai didi

c# - NameValueCollection Equals 方法是否比较两个集合是否具有相同的键值对?

转载 作者:行者123 更新时间:2023-11-30 14:00:11 26 4
gpt4 key购买 nike

如果不是,确定两个 NameValueCollections 对象是否相等的最佳方法是什么。

我用它来确定解析到名称值集合中的两个查询字符串是否具有相同的键和值,而不管顺序如何。

最佳答案

Equals 似乎没有执行您想要的操作。它似乎检查引用是否相等,而不是它们是否等价。

以下方法应该有效(使用 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]);
}

注意:如果顺序很重要,可以删除 OrderBy 语句。如果每个键有多个值,并且无论顺序如何,您都需要检查值是否相等,那么最后一行可以更改为:

        && nvc1.AllKeys
.All(key => nvc1.GetValues(key)
.OrderBy(val => val)
.SequenceEqual(nvc2.GetValues(key)
.OrderBy(val => val)));

关于c# - NameValueCollection Equals 方法是否比较两个集合是否具有相同的键值对?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11670795/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com