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&lt;T&gt; 接口

如果它是一个快速而肮脏的单次检查并且表的大小不是那么大,你也可以将它序列化并直接比较输出

【讨论】:

以上是关于c#如何检查SelectedListItem的两个列表是不是具有相同的值的主要内容,如果未能解决你的问题,请参考以下文章

如何在 C# 中快速检查两个数据传输对象是不是具有相同的属性?

在 C# 中如何检查参数是否为 null

如何检查在 C# 的全局类中找到的数组中是不是存在对象

两个表连接时如何检查字段是不是为空

在 c# 中比较两个 pdf 文件的最佳方法是啥?

C#刷Leetcode 1662. 检查两个字符串数组是否相等 IEnumerator