【问题标题】:Is there a way to break down a 1-D List<Model> into a 2D array? [closed]有没有办法将一维 List<Model> 分解为二维数组? [关闭]
【发布时间】:2014-01-02 21:15:28
【问题描述】:

由于 C# 非常灵活(部分是由于它的解释性性质),我想知道以下功能是否现成可用。否则我就自己动手了。

我有一个List&lt;MyModel&gt;,使用嵌套循环遍历它会更容易/方便:

for (col = 1 to lastCol)
    for (row = 1 to lastRow)
        scrutinize(row, col);

另外:也许我应该在各列中使用foreach

【问题讨论】:

  • 您可能需要提供有关 MyModel 的更多信息。
  • 1) C#不是一种解释型语言。 2)您发布的代码是不是 C#。
  • 用嵌套循环遍历 List&lt;T&gt; 是什么意思?你能更具体地说明你想要实现的目标吗?请务必包含您当前解决方案的代码。
  • XY Problem。你想做什么?发布一些额外的代码来阐明需要什么。
  • @TravisBanger 你应该阅读一些关于术语 interpretedinterpretercompilerJIT 等,然后再提出此类声明。否则你可能听起来很有趣。

标签: c# wpf


【解决方案1】:

回答您的标题问题,您可以使用 LINQ 将一维列表分解为二维数组。对于简单的整数列表:

List<int> list = new List<int>() { 1, 2, 3, 4, 5, 6, 7, 8 };
var array =
list.Select((v, i) => new { Value = v, Index = i})
    .GroupBy(x => x.Index / 4, x => x.Value, (key,values) => values.ToArray())
    .ToArray();

然后您可以使用二维array 访问list 元素。

【讨论】:

  • 这是创建一个真正的二维数组还是一个数组数组(锯齿状数组)?
  • @ChrisDunaway,它创建了锯齿状数组,但对于 OP 似乎没有什么不同
  • 上面代码的问题是我的模型是一成不变的。我无法将其更改为 Dictionary
  • @TravisBanger,数组类型为[][],不需要使用Dictionary
  • @TravisBanger my model needs to be IEnumerable 听起来很糟糕,我坚持要澄清。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-06-22
  • 1970-01-01
  • 2011-04-13
  • 2019-10-29
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多