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
的1IEnumerable
:
问题:
- 有什么好办法吗?(而不是一圈接一圈)
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);
}