gpt4 book ai didi

c# - 比较两个 ObservableCollection(s) 以查看它们是否不同

转载 作者:太空狗 更新时间:2023-10-29 23:17:13 24 4
gpt4 key购买 nike

我正在为设置表单比较两个版本的 ListView 。我需要知道用户是否真的修改了列表,在这种情况下,当他们单击“保存”时,我将实际保存。如果他们没有更改任何内容,当他们单击“保存”时,我不会浪费内存/时间来重新保存他们没有更改的内容。

无论如何,我如何比较两个 ObservableCollection 以查看它们是否完全不同?

提前致谢!

最佳答案

您可以使用 LINQ Except 方法:生成两个序列的集合差异。

http://msdn.microsoft.com/en-us/library/system.linq.enumerable.except.aspx

考虑以下示例方法...

public void ExceptFunctioni()
{
int[] numbersA = { 0, 2, 4, 5, 6, 8, 9 };
int[] numbersB = { 1, 3, 5, 7, 8 };
IEnumerable<int> aOnlyNumbers = numbersA.Except(numbersB);
if(aOnlyNumbers.Count()>0)
{
// do something
}
}

Except 方法在第一个集合上调用,并将第二个集合作为参数传递。结果将包含差异。然后您可以查询结果并采取相应的措施。如果两个序列相等,则结果的计数将为零。

话虽如此,值得注意的是,MVVM 世界中的首选策略是使用此方法来控制是否启用“保存”按钮。在这种方法中,如果两个集合相等,“保存”按钮将被禁用并且用户无法访问它。

但无论哪种方式,LINQ 方法都提供了一种非常简洁的方法来实现您所追求的...

添加:看到您在回复“Dumb”评论时所做的评论,您的“oldList”将对应于上面示例代码中的 numbersB...


还有 comment来自 'Stonetip '(感谢谁)...

More succinct: if(numbersA.Except(numbersB).Any()) { // do something } 

关于c# - 比较两个 ObservableCollection(s) 以查看它们是否不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8691202/

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