2016-03-25 23 views
0

私は設定操作をしている辞書のリストを2つ持っています。私は私がやっているものを例示し、私は例として実現しようとしています:C#でデータを操作する操作

var A = new List<Dictionary<string, int>>(); 
var B = new List<Dictionary<string, int>>(); 

A.Add(new Dictionary <string, int> { {"KeyA",1}, {"KeyB", 2} }); 
A.Add(new Dictionary <string, int> { {"KeyA",3}, {"KeyB", 5} }); 
B.Add(new Dictionary <string, int> { {"KeyA",6}, {"KeyB", 8}, {"KeyC", 11} }); 
B.Add(new Dictionary <string, int> { {"KeyA",3}, {"KeyB", 7}, {"KeyC", 15} }); 

var result = A.Intersect(B, new KeyComparer("KeyA")); 

これは私の交差点のために使用してKEYAのリストをバック与え、私は結果として{"KeyA",3}, {"KeyB", 5}を持つ単一の行を取得します。交叉が起こったときにBから結果として{KeyC, 15}を追加したい場合はどうすればいいですか?

私は質問で明確であることを願っています。

答えて

0

私が正しくあなたの質問を理解している場合、あなたはあなたが交差点をやった後、配列と他のいくつかの項目を追加したい...そして、何が必要Enumerable.Concatです:

var result = A.Intersect(B, new KeyComparer("KeyA")) 
       .Concat(B.Last().Where(pair => pair.Key == "KeyC"));