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