c#如何检查SelectedListItem的两个列表是不是具有相同的值
Posted
技术标签:
【中文标题】c#如何检查SelectedListItem的两个列表是不是具有相同的值【英文标题】:c# how to check if two Lists of SelectedListItem have the same valuesc#如何检查SelectedListItem的两个列表是否具有相同的值 【发布时间】:2022-01-03 20:08:03 【问题描述】:我正在努力解决基本问题。我正在尝试比较两个 SelectedListItem 列表。我想知道这两个列表是否具有相同的值。
假设我们有
List<SelectedListItem> listA, listB
我已经尝试了很多方法,例如:
new HashSet<SelectListItem>( listA ).SetEquals( listB );
或
var firstNotSecond = listA .Except( listB ).ToList();
var secondNotFirst = listB .Except( listA ).ToList();
或
listA.Contains(listB[i])
甚至简单
listA==listB
我仍然得到错误的输出,但我 100% 确定这些值是相同的,因为一个列表是从第二个列表创建的。
有没有简单的方法来比较他们的物品?
非常感谢
编辑
上下文: 我从一个数据库创建了一个 listA 并将其放入另一个空数据库。现在我将第二个数据库中的所有数据下载为 listB 并尝试检查数据是否已更改
【问题讨论】:
如果一个列表是从另一个列表中创建的,那么它们是否只有在它们的项目数相同时才相等?或者您是说一个列表可能是 A、B、C、D,而另一个可能是 A、A、A、D.. 了解上下文会更有帮助 是的,这可能是真的,但是在某个随机时间,一个列表可以改变它的一些内部值,因此计数是不够的 告诉我们关于重复的事情......如果这些其他随机更改的列表项不是来自其他列表,那么这些项目来自哪里 我在描述中添加了一个 EDIT :) 什么是 SelectedListItem? 【参考方案1】:你必须比较值来比较引用是行不通的,所以也许写一个小助手方法来检查两个 SelectedListItems 是否具有相同的值,并检查两个列表是否具有相同的项目。
如果你想以漂亮的方式来做,例如为 SelectedListItem 类实现IEqualityComparer<T>
接口
如果它是一个快速而肮脏的单次检查并且表的大小不是那么大,你也可以将它序列化并直接比较输出
【讨论】:
以上是关于c#如何检查SelectedListItem的两个列表是不是具有相同的值的主要内容,如果未能解决你的问题,请参考以下文章