比较复杂结构C#中的N个对象

时间:2018-11-20 18:08:27

标签: c#

我有一组要比较的Data类实例。 每个实例的Files属性中都有未知数量的项目。

如果要在两个具有相同Data值的文件之间发现版本差异,我想将FoundDifference的每个实例与其他实例进行比较,并将true设置为Name

有没有简单的算法可以做到这一点?

这是对象外观的示例设置。 在此示例中,您希望除f1,f21和f31以外的所有内容将FoundDifference设置为true

class Data
{
    public string DC { get; set; }
    public List<File> Files { get; set; }

}

class File
{
    public string Name { get; set; }
    public string Version { get; set; }
    public bool FoundDifference { get; set; }

}
class Program
{
    static void Main(string[] args)
    {
        Data d1 = new Data();
        d1.DC = "DC1";

        File f1 = new File();
        f1.Name = "File1";
        f1.Version = "1";
        d1.Files.Add(f1);

        File f2 = new File();
        f2.Name = "File2";
        f2.Version = "1";
        d1.Files.Add(f2);

        File f3 = new File();
        f3.Name = "File3";
        f3.Version = "1";
        d1.Files.Add(f3);

        //Another
        Data d2 = new Data();
        d2.DC = "DC2";

        File f21 = new File();
        f21.Name = "File1";
        f21.Version = "1";
        d2.Files.Add(f21);

        File f22 = new File();
        f22.Name = "File2";
        f22.Version = "2";
        d2.Files.Add(f22);

        File f23 = new File();
        f23.Name = "File3";
        f23.Version = "1";
        d2.Files.Add(f23);

        //Another
        Data d3 = new Data();
        d3.DC = "DC3";

        File f31 = new File();
        f31.Name = "File1";
        f31.Version = "1";
        d3.Files.Add(f31);

        File f32 = new File();
        f32.Name = "File2";
        f32.Version = "2";
        d3.Files.Add(f32);

        File f33 = new File();
        f33.Name = "File3";
        f33.Version = "5";
        d3.Files.Add(f33);


        //How Can I change All Files FoundDifference prop to true if FileName is the same and a difference is in Version is found??

        Console.ReadLine();
    }

1 个答案:

答案 0 :(得分:1)

我将通过使用if( in_array( $product->get_parent_id() == 534 ) 来跟踪每个Dictionary<string, List<File>>中的文件来解决此问题。首先迭代所有数据中的所有文件,然后在字典中查找文件名,如果找不到,请创建一个新列表并添加它。然后检查该列表中是否有任何具有不同版本的文件。如果找到一个,则设置所有标志,最后将文件添加到列表中。

Data