Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/257.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 将交错数组转换为IEnumerable<;KeyValuePair<;int,int>>;?_C#_Linq - Fatal编程技术网

C# 将交错数组转换为IEnumerable<;KeyValuePair<;int,int>>;?

C# 将交错数组转换为IEnumerable<;KeyValuePair<;int,int>>;?,c#,linq,C#,Linq,我有一个锯齿状阵列: (n在编译时给出,因此请假设所有值都已存在) 我想从此结构创建一个IEnumerable,其中: 键是:伪值,值是n(伪值是唯一的) (旁白信息-我需要将图片映射到用户) 所以对于组#1我想要: {2-> 0} {55-> 0} {4-> 0} 对于组#2 但作为一个整体清单: 所以最终结果应该是KeyValuePair的1IEnumerable: 问题: 有什么好办法吗?(而不是一圈接一圈) foreach(变量t为锯齿状。SelectM

我有一个锯齿状阵列:

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

我想从此结构创建一个
IEnumerable
,其中:

是:
伪值
n
(伪值是唯一的)

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

所以对于组
#1
我想要:

  {2-> 0}
  {55-> 0}
  {4-> 0}
对于组
#2

但作为一个整体清单:

所以最终结果应该是
KeyValuePair
的1
IEnumerable

问题:

  • 有什么好办法吗?(而不是一圈接一圈)
foreach(变量t为锯齿状。SelectMany((行,行索引)=>row.Select(值=>newkeyvaluepair(值,行索引)))
{
Console.WriteLine(“{0}-{1}”,t.Key,t.Value);
}
foreach(变量t为锯齿状。SelectMany((行,行索引)=>row.Select(值=>newkeyvaluepair(值,行索引)))
{
Console.WriteLine(“{0}-{1}”,t.Key,t.Value);
}

是的,但是在foreach()中生成所需的temp表达式并不是最佳结果。您需要的一切都在这个答案中。只需将查询赋给变量,而不是直接在
foreach
循环中使用它,就可以了。是的,但是在foreach()中生成所需的临时表达式并不是最优的。您需要的一切都在该答案中。只需将查询分配到变量中,而不是直接在
foreach
循环中使用它,就可以了。
  {2-> 0}
  {55-> 0}
  {4-> 0}
  {6 -> 1}
  {3-> 1}
  {7-> 1}
  ...
  ...
  etc
  {2-> 0}
  {55-> 0}
  {4-> 0}
  {6 -> 1}
  {3-> 1}
  {7-> 1}
  ...
  {9 -> n}
  {5-> n}
  {1-> n}
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);
}