将两个阵列配对

本文关键字:阵列 两个 | 更新日期: 2023-09-27 17:58:41

假设我有两个长度总是相等的数组,看起来像这样:

{"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获取一些数据。

将两个阵列配对

您可以先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()
                                               );

试试这个

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();