确定List <string []>枢轴

伏波

我有以下简化的输入:

List<string[]> sList = new List<string[]>();
sList.Add(new string[]{ "Product", "ProductID"});
sList.Add(new string[] { "Fork", "1" });
sList.Add(new string[] { "Spoon", "2" });
sList.Add(new string[] { "Knife", "3" });

我想要以下输出

ResultList[0] == { "Product" ,"Fork","Spoon","Knife"};
ResultList[1] == { "ProductID" ,"1","2","3"};

首先我用2个循环解决了这个问题,然后我改变了对这种linq的处理方式(两者都起作用):

List<string[]> Result = sList.SelectMany(x => x)
  .Select((x, index) => new KeyValuePair<int, string>(index % sList.First().Length, x))
  .GroupBy(s => s.Key).Select(g => g.Select(x => x.Value)
  .ToArray()).ToList();

它有效,但对我来说似乎有点circuit回。有没有我忽略的更简单的方法(内置的?)?

安德烈

因此,如果您确定每个数组都恰好包含2个元素,那么问题就变成了两个琐碎选择的组合。但是,如果您只知道所有数组的大小都相同,而又不想依赖确切的数字,则此方法应该做到这一点:

List<string[]> Result =         
    sList.First()
         .Select((x, i) => i)
         .Select(i => sList.Select(x => x[i]).ToArray())
         .ToList();

我们基本上是使用第一个项目sList来找出数组中有多少个成员,然后为每个成员进行选择。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章