我有一个 C# 类,我们称之为Item
类。Item
类具有以下属性。
Name
Region
Value
我有 4 个列表,其中包含多个类型的对象item
。清单之一是主清单。
以下是MasterList的内容
Name Region Value
A Global 10
B Global 20
C Global 30
D Global 40
E Global 50
F Global 60
G Global 70
H Global 80
I Global 90
J Global 100
以下是USAList的内容
Name Region Value
G USA 50
H USA 50
I USA 50
J USA 50
A USA 50
以下是UKList的内容
Name Region Value
A UK 20
B UK 20
C UK 20
D UK 20
F UK 20
以下是EUList的内容
Name Region Value
A EU 30
B EU 30
D EK 30
G EK 30
I EK 30
任何列表都可以包含任意数量的项目。主列表将包含所有项目。一个项目在列表中只能出现一次。列表中的项目可能会或可能不会(按名称)排序。
我想从所有列表中查找项目,假设主列表包含所有项目。我需要按名称查找项目并创建一个应该如下所示的新列表。
Name GlobalValue USAValue UKValue EUValue
A 10 50 20 30
B 20 20 30
C 30 20
D 40 20 30
E 50
F 60 20
G 70 50 30
H 80 50
I 90 50 30
J 100 50
我知道我可以创建一个具有以下属性的新类。
Name, GlobalValue, USAValue, UKValue, EUValue
然后我可以开始一个循环来遍历主列表并在这个循环内,我将再运行 3 个循环。USAList 一份,UKList 一份,EUList 一份。然后我会尝试按名称查找项目,然后创建新列表。
但我想知道获得所需结果的最有效方法。
演示课程和列表
public class Item
{
public string Name { get; set; }
public string Region { get; set; }
public string Value { get; set; }
}
列表
List<Item> MasterList = new List<Item>();
MasterList.Add(new Item {Name = "A", Region = "Global", Value = "10"});
MasterList.Add(new Item {Name = "B", Region = "Global", Value = "20"});
MasterList.Add(new Item {Name = "C", Region = "Global", Value = "30"});
MasterList.Add(new Item {Name = "D", Region = "Global", Value = "40"});
MasterList.Add(new Item {Name = "E", Region = "Global", Value = "50"});
MasterList.Add(new Item {Name = "F", Region = "Global", Value = "60"});
MasterList.Add(new Item {Name = "G", Region = "Global", Value = "70"});
MasterList.Add(new Item {Name = "H", Region = "Global", Value = "80"});
MasterList.Add(new Item {Name = "I", Region = "Global", Value = "90"});
MasterList.Add(new Item {Name = "J", Region = "Global", Value = "100"});
List<Item> USAList = new List<Item>();
USAList.Add(new Item { Name = "G", Region = "USA", Value = "50" });
USAList.Add(new Item { Name = "H", Region = "USA", Value = "50" });
USAList.Add(new Item { Name = "I", Region = "USA", Value = "50" });
USAList.Add(new Item { Name = "J", Region = "USA", Value = "50" });
USAList.Add(new Item { Name = "A", Region = "USA", Value = "40" });
List<Item> UkList = new List<Item>();
UkList.Add(new Item { Name = "A", Region = "UK", Value = "20" });
UkList.Add(new Item { Name = "B", Region = "UK", Value = "20" });
UkList.Add(new Item { Name = "C", Region = "UK", Value = "20" });
UkList.Add(new Item { Name = "D", Region = "UK", Value = "20" });
UkList.Add(new Item { Name = "F", Region = "UK", Value = "20" });
List<Item> EUList = new List<Item>();
EUList.Add(new Item { Name = "A", Region = "EU", Value = "30" });
EUList.Add(new Item { Name = "B", Region = "EU", Value = "30" });
EUList.Add(new Item { Name = "G", Region = "EU", Value = "30" });
EUList.Add(new Item { Name = "G", Region = "EU", Value = "30" });
EUList.Add(new Item { Name = "I", Region = "EU", Value = "30" });