假设我有两个总长度相等的数组,它们看起来像这样:
{"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的一些数据。
答案 0 :(得分: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()
);
答案 1 :(得分: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();