将Jagged数组转换为IEnumerable <keyvaluepair <int,int>&gt;?</keyvaluepair <int,int>

时间:2014-05-10 19:58:19

标签: c# linq

我有这个Jagged数组:

n在编译时给出,因此请假设所有值都已存在)

int[][] jagged = new int[n][];

jagged[0] = new int[3];
jagged[0][0] = 2; // Please ignore the dummy values....
jagged[0][1] = 55;
jagged[0][2] = 4;

jagged[1] = new int[3];
jagged[1][0] = 6;
jagged[1][1] = 3;
jagged[1][2] = 7;

...
...
jagged[n] = new int[3];
jagged[n][0] = 9;
jagged[n][1] = 5;
jagged[n][2] = 1;

我想从这个结构中创建一个IEnumerable<KeyValuePair<int,int>>,其中:

是:dummy valuen(虚拟值是唯一的)

(除了信息 - 我需要将图片映射到用户)

因此对于我想要的小组#1

  {2-> 0}
  {55-> 0}
  {4-> 0}
小组#2

  {6 -> 1}
  {3-> 1}
  {7-> 1}
  ...
  ...
  etc

但作为整体清单:

因此,最终结果应为IEnumerable的{​​{1}}:

KeyValuePair<int,int>

问题:

  • 是否有任何Linq&#39; y方式?(而不是循环遍历循环)?

1 个答案:

答案 0 :(得分:5)

foreach (var t in jagged.SelectMany((row, rowIndex) => row.Select(value => new KeyValuePair<int, int>(value, rowIndex))))
{
    Console.WriteLine("{0} - {1}", t.Key, t.Value);
}