Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/2.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#_Compare_Fileinfo - Fatal编程技术网

C# 比较多个列表以包含相同的数据

C# 比较多个列表以包含相同的数据,c#,compare,fileinfo,C#,Compare,Fileinfo,我有一个属性类型为list的机器列表。这是定义 internal class Machine { internal string MachineName { get; set; } internal List<FileInfo> Files { get; set; } internal Machine(string machine) { this.MachineName = machine; this.Files =

我有一个属性类型为
list
的机器列表。这是定义

internal class Machine
{
    internal string MachineName { get; set; }
    internal List<FileInfo> Files { get; set; }

    internal Machine(string machine)
    {
        this.MachineName = machine;
        this.Files = new List<FileInfo>();
    }

    public override string ToString()
    {
        return string.Format("Machine - {0}", this.MachineName);
    }
}
内部类机器
{
内部字符串MachineName{get;set;}
内部列表文件{get;set;}
内机(串机)
{
this.MachineName=机器;
this.Files=新列表();
}
公共重写字符串ToString()
{
返回string.Format(“Machine-{0}”,this.MachineName);
}
}
代码从我网络上的服务器填充列表,每个服务器都应该有相同版本的相同文件,如果没有,我需要了解它们

如何使用C#实用地比较多个
文件
列表(如果有必要,一次最多四个)

如果只需要比较两台机器(例如使用
Distinct
),并且我可以将所有列表都比较为一台,那么这将很容易。但是有什么方法可以同时比较所有数据吗?

你应该看看

您只需展平文件列表(),按
FileInfo
分组,并断言所有组都有
n
文件,
n
是您正在验证的机器数量:

var areAllIdentical = machines.SelectMany(m => m.Files)
                              .GroupBy(f => f, myComparer)
                              .All(g => g.Count() == n);
myComparer
之所以存在,是因为分组时可能需要为
FileInfo
实现自己的相等逻辑;默认行为很可能不符合您的要求,现在无法检查它,但我猜它的引用相等


是什么使两个
FileInfo
被认为是相同的?相同的文件名、上次写入日期等。?在自定义中实现这一逻辑,您就可以完成设置。

这个问题有点难以回答,因为您不完全清楚要做什么。然而;如果你想比较任何东西的列表,你可以使用linq,但你需要一些东西来比较它。在对比中你到底在寻找什么?你能发送一行代码来显示比较逻辑吗?从那里我相信我可以给你我用来比较列表的逻辑。