私はC#クラスを持っていますので、それをItem
クラスと呼びましょう。 Item
クラスには次のプロパティがあります。複数のリストの項目をPOCOで見つけ、マスターリストでマージするのが最も効率的です
Name
Region
Value
I型item
の複数のオブジェクトを含む4リストを持っています。リストの1つはマスターリストです。
後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
の内容は次
Name Region Value
A UK 20
B UK 20
C UK 20
D UK 20
F UK 20
UKList
の内容に続いUSAList
Name Region Value
G USA 50
H USA 50
I USA 50
J USA 50
A USA 50
のコンテンツれているされています
次はの内容EUList
Name Region Value
A EU 30
B EU 30
D EK 30
G EK 30
I EK 30
どれリストにあるアイテムの数に制限はありません。マスターリストにはすべてのアイテムが含まれます。アイテムはリストに1回しか表示できません。アイテムは、リスト内でソートされていてもソートされていなくてもよい(名前別)。
マスターリストにすべてのアイテムがあると仮定して、すべてのリストからアイテムを探したいと思います。私は名前で項目を見つける必要があります&このように見える新しいリストを作成します。
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つの以上のループを実行します。 1人はUSAList、もう1人はUKリスト& EUList用です。それから私は病気の名前で商品を見つけようとすると、私は新しいリストを作成します。
しかし、私は望ましい結果を得るための最も効率的な方法を知りたいと思います。
DEMO CLASS & LISTあなたが提供するサンプルコードで
public class Item
{
public string Name { get; set; }
public string Region { get; set; }
public string Value { get; set; }
}
LIST
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" });
投票の理由はありますか? – OpenStack
downvoterについては話すことはできませんが、おそらくあなたは新しいリストに値を入力する既存のコードを表示する必要があります。それはあなたが私たちにあなたのためにそれを書くように要求しているように見えます。また、「最も効率的」という意味を定義することもできますか? – stuartd
@stuartd:ありがとう。私は質問を更新します。 – OpenStack