我正在创建一个正在通过文件夹结构的程序。如果有什么改变,我想写入一个列表。我的问题是,当比较两个列表时,我不知道如何将更改保存在lstChanges中。 if语句的语法是什么?这是我得到了现在:C#比较两个列表(FileData)
0
A
回答
0
假设你从最后一次迭代文件的List<FileInfo>
在lstOld
,您可以更新您的if语句
//using System.Linq;
if (!lstOld.Any(old => old.Path == f.FullName && old.ChangingDate == f.LastWriteTime))
List<>.Contains
使用默认的质量比较器。因此,创建new FileInfo
将不起作用,除非FileInfo
正确实施IEquatable<T>.Equals()
。
0
你也可以试试老式左外连接:)
var lParent = x.GetFiles();
var lChild = lstOld;
var differences = lParent.GroupJoin(
lChild,
p => p.FullName,
c => c.LastWriteTime,
(p, g) => g
.Select(c => new { FullName = p.FullName, LastWriteTime = c.LastWriteTime})
.DefaultIfEmpty(new { FullName = p.FullName, LastWriteTime = null}))
.SelectMany(g => g);
如果你的目标是从两个集合收集所有唯一值,你需要的东西被称为完整外部联接。对于两个相同类型的集合,你可以使用联盟和删除公共部分:
lParent.Union(lChild).Except(lParent.Intersect(lChild));
相关问题
- 1. 比较两个列表C#
- 2. 比较两个列表C#
- 3. c#比较两个列表/表
- 4. 比较C两个阵列++
- 5. 比较两个对象列表C#
- 6. 比较两个列表在C#
- 7. 比较两个列表,并与C#
- 8. 比较两个列表
- 9. 比较两个列表
- 10. 比较两个列表?
- 11. 比较两个列表
- 12. 比较两个列表linq
- 13. c#列表比较器使用两个比较元素
- 14. SQL Server:比较两个表,两列
- 15. Mysql的比较两列在两个表
- 16. 比较两个数据表中的c#
- 17. C#比较两个列表并更新它的列值
- 18. 比较两个字符串列表.CSV
- 19. 比较两个收集列表
- 20. 比较Python中xml的两个列表
- 21. 比较两个列表元素与LINQ
- 22. 比较两个列表,并使用LINQ
- 23. 比较Python中的两个列表项
- 24. Grails/CreateCriteria - 比较两个列表
- 25. 如何比较两个数组列表?
- 26. 比较两个数组列表
- 27. PostgreSQL的 - 比较两个表的列
- 28. 比较两个列表的内容
- 29. VBA中两个列表框的比较
- 30. 比较两个表的行和列
旧列表永远不会包含你正在创建内嵌的对象,你可能要检查的属性,而不是整个对象 – Marv
你怎么样将“旧”信息存储在旧列表中?它是一个平面列表还是将包含嵌套文件? – 2017-05-30 08:19:47
@goaty即时通过读取一个XML文件存储它。 lstNew将在应用程序执行时覆盖xml。 –