【发布时间】:2023-03-14 21:08:01
【问题描述】:
我有几个列表 List<OldData> oldItems = new List<OldData>(); 和 List<NewData> newItems = new List<NewData>();
我在这里试图实现的是避免一些冗余数据进入的可能性,因此在将值添加到列表之前检查一些条件。
首先在 oldItems 我将存储一些值,在 newItems 列表中我将存储一组完全不同的值,但情况总是如此newItems 列表中可能有一些值已存在于 oldItems 列表中。
正在使用的两个变量是一个Name变量和一个存储某个路径的path变量
所以首先我想检查旧项目列表中的名称是否与新项目列表中的名称相同的任何值, 如果有一个项目我要检查相应项目的相应Path变量是否相同,
如果相同,我可以简单地保持该项目在 OldItems 列表中的方式,如果恰好不同,我将从旧项目列表中删除它(然后在新项目列表中使用该项目)
以上所有内容都在一个坚果壳中,
我想在旧项目列表中检查新项目列表中是否有与之对应的名称 如果有,我想检查两个List中同名的两个项目的Path变量中的对应值是相同还是不同
我已经制作了一个简单的虚拟应用程序来演示这个,但我真的坚持我如何实现逻辑
有什么建议吗?
class Program
{
static void Main(string[] args)
{
List<OldData> oldItems = new List<OldData>();
OldData oldData1 = new OldData();
oldData1.Name = "Test01";
oldData1.OriginalPath = "D:/Temp01";
oldItems.Add(oldData1);
OldData oldData2 = new OldData();
oldData1.Name = "Test02";
oldData1.OriginalPath = "D:/Temp02";
oldItems.Add(oldData2);
List<NewData> newItems = new List<NewData>();
NewData newData1 = new NewData();
newData1.Name = "Test01";
newData1.OriginalPath = "D:/Temp01";
newItems.Add(newData1);
NewData newData2 = new NewData();
oldData1.Name = "Test05";
oldData1.OriginalPath = "D:/Temp05";
newItems.Add(newData2);
foreach (var item in oldItems)
{
//Check if there are any Names which are same from the new Item list
//If if there is such an item check if the OriginalPath variable is the same iin both
//If yes => Remove that particular item from the Old data List
//If Not => Keep that Item in the old data List
}
}
}
class OldData
{
public string Name { get; set; }
public string OriginalPath { get; set; }
}
class NewData
{
public string Name { get; set; }
public string OriginalPath { get; set; }
}
在这种情况下,由于值Test01是两个List共有的,它会检查两个项目对应的路径变量值是否相同
【问题讨论】: