2016-07-26 14 views
2

と仮定私はこのようになり、常に同じ長さの2つの配列を有する:ペアリング二つの配列

{"A", "C", "A", "A", "B", "B", "A", "A" } 
{ 1, 1, 2, 3, 1, 10, 5, 7 } 

データは、配列インデックスによって対になっています。

私は以下のように見える結果を生成するためにLINQを使用したい:

A: { 1, 2, 3, 5, 7 } 
B: { 1, 10 } 
C: { 1 } 

は、どのように私はそれを達成することができますか?

これらの配列は、httpリクエストパラメータに由来します。文字はデータベース名に適用され、整数はデータベース内の表のIDです。次のステップは、各データベースに接続し、各IDのデータを取得することです。

答えて

9

最初にZipにしてからグループ化できます。グループ化された結果を使用して、辞書などを作成します。

string[] first = { "A", "C", "A", "A", "B", "B", "A", "A" }; 
int[] second = { 1, 1, 2, 3, 1, 10, 5, 7 }; 

var list = first.Zip(second, (f, s) => new { First = f, Second = s }); 

Dictionary<string, int[]> d = list.GroupBy(i => i.First) 
            .ToDictionary(k => k.Key, v => v.Select(val => val.Second) 
                    .ToArray() 
               ); 
0

この

string[] s = { "A", "C", "A", "A", "B", "B", "A", "A" }; 
int[] t = { 1, 1, 2, 3, 1, 10, 5, 7 }; 

var results = s.Select((x, i) => new { s = x, t = t[i] }) 
    .GroupBy(x => x.s).ToList(); 
をお試しください