【问题标题】:Split an ordered list into multiple lists from multiple indexes从多个索引将有序列表拆分为多个列表
【发布时间】:2022-12-20 03:25:24
【问题描述】:

我希望根据从另一个列表提供的索引将有序列表拆分为多个列表。

首发名单1,2,3,4,5,6,7,8,9,10

索引列表0,3,8

列表的预期列表

1,2,3

4,5,6,7

8,9,10

Index List 将始终以索引 0 开头。预期列表将包含从起始列表到 Index List + 1 的所有项目,依此类推。

0,2,8 的索引列表将导致 1,2 3,4,5,6,7,8 9,10

我试过使用 GetRange 并跟踪下一个索引的开始位置,然后使用差异添加到列表中,但是添加到预期列表中的项目数量不正确。

【问题讨论】:

  • 拆分规则是什么?例如索引列表3,5 应该导致什么分裂?
  • 你想让索引列表从 1 开始吗?那么索引列表中的索引是数组索引+1?
  • 抱歉造成混淆,我们从索引 0 开始。我已经更新了问题以反映这一点。

标签: c# linq


【解决方案1】:
   var list = new List<int> { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
   var indexList = new List<int> { 0, 2, 8 };
    
   // using zip for pairwise selection we can calculate lengths of each segment
   var listOfLists = indexList.Zip(indexList.Skip(1).Append(list.Count))
        .Select(i => list.GetRange(i.First, i.Second - i.First))
        .ToList();

【讨论】:

    猜你喜欢
    • 2018-11-25
    • 1970-01-01
    • 2019-06-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-05
    • 2016-09-01
    • 1970-01-01
    相关资源
    最近更新 更多