Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在C中比较两个列表的简单方法#_C#_Wpf_List_Mvvm_Comparison - Fatal编程技术网

C# 在C中比较两个列表的简单方法#

C# 在C中比较两个列表的简单方法#,c#,wpf,list,mvvm,comparison,C#,Wpf,List,Mvvm,Comparison,我正在寻找一种在C#中比较列表的简化方法。目前我正在做的工作如下: 1.启动原始列表 2.启动更新列表 3.使用Union、Except等手动比较以获得差异 该应用程序是一个Windows Phone 8.1应用程序,使用MVVM实现。我正在读取手机存储器上的文件,将存储文件解析为自定义类,然后进行比较。考虑到我不能直接做,到目前为止我是手工做的,速度很慢 我要找的是: 获取新项目(非常简单) 获取更新的项目(硬!) 如果列表中有一个基本的CRUD环境,那就太好了 无论如何,问题仍然是一样的

我正在寻找一种在C#中比较列表的简化方法。目前我正在做的工作如下: 1.启动原始列表 2.启动更新列表 3.使用Union、Except等手动比较以获得差异

该应用程序是一个Windows Phone 8.1应用程序,使用MVVM实现。我正在读取手机存储器上的文件,将存储文件解析为自定义类,然后进行比较。考虑到我不能直接做,到目前为止我是手工做的,速度很慢

我要找的是:

  • 获取新项目(非常简单)
  • 获取更新的项目(硬!)
如果列表中有一个基本的CRUD环境,那就太好了


无论如何,问题仍然是一样的——有没有一种简单易行的方法来完成我的任务,或者我应该坚持使用有效的解决方案?

至于更新,请实现一个时间戳属性,该属性在任何属性更改时更新。

然后您可以比较TimeSpamp属性

你说的“比较”是什么意思?比较相应的idnexes?比较引用的存在性?显示代码。比较列表的内容,基本上确定原始项目和新项目之间的差异(因此,用外行的话说,指出新项目、更改项目、删除项目和未更改项目)。定义“指出新项目、更改项目、删除项目和未更改项目”。你想比较一下参考资料吗?如果我的描述不清楚,我很抱歉。是的,我希望这样做。在运行一些测试之后,很明显,创建两个单独的列表会导致创建不同的引用。因此,时间戳方法将不起作用,因为两个列表包含不同的引用,而对象本身可能相同。因此,将两个引用与同一对象进行比较,以确定差异。TimeStamp有效-对同一对象的两次引用与对每个属性的引用相同。否。正如我所说,这两个列表包含不同的引用,不同的对象。我所做的是:1。获取文件列表2。从文件列表中创建自定义对象(尽管这些对象有对所述文件的引用,因为我正在处理WP8.1,它是一个存储文件)3。将自定义对象添加到列表4。比较列表。由于自定义对象稍后会填充有关文件的信息(例如大小、创建日期、其他元数据),因此对象是分开的。我能想到的最好的解决方案是使用ObservaleCollection类的自定义实现,在这里我重写了Compare函数来逐个元素并手动检查差异,但这是一项非常繁琐的工作,我希望有一个更简单的解决方案。它很混乱,但这是目前为止我找到的唯一一个用自定义关系填充文件库的解决方案(它是一个音乐库-音乐文件被解析为歌曲对象,艺术家和专辑类被创建,等等。我正在比较两个歌曲列表:当前使用的一个和要加载的一个)