C# 按可除数将一个列表拆分为多个列表

C# 按可除数将一个列表拆分为多个列表,c#,C#,我正在研究一个动态解决方案,需要根据传入的变量将一个大列表拆分为x个列表 因为我正在处理的类非常复杂,为了得到一个最小的可复制问题,我将下面的代码装箱,100%地表示我的问题 我面临的问题是一个0除问题,代码如下 当我将if(j%I==0)更改为if(j%3==0)时遇到的其他问题我得到的结果“1”、“4”、“7” 当我看到用上面的更改从if块的列表中删除一个项目时,我得到 3个新列表和原始列表中剩余的3个项目 1,5,9 二,七, 三, 4,6,8 void Main() { var list

我正在研究一个动态解决方案,需要根据传入的变量将一个大列表拆分为x个列表

因为我正在处理的类非常复杂,为了得到一个最小的可复制问题,我将下面的代码装箱,100%地表示我的问题

我面临的问题是一个0除问题,代码如下

当我将
if(j%I==0)
更改为
if(j%3==0)
时遇到的其他问题我得到
的结果“1”、“4”、“7”

当我看到用上面的更改从if块的列表中删除一个项目时,我得到

3个新列表和原始列表中剩余的3个项目

1,5,9

二,七,

三,

4,6,8

void Main()
{
var listsToSplit = 3;

var l = new List<string>(){
    "1", "2", "3", "4", "5", "6", "7", "8",
    "9"
};

var dict = new Dictionary<int, List<string>>();

for (var i = 0; i < listsToSplit; i++)
{
    for (var j = 0; j < l.Count; j++)
    {
        if (j % i == 0)
        {
            List<string> value;

            if (dict.TryGetValue(i, out value))
            {
                value.Add(l[j]);
            }
            else
            {
                var newListItem = new List<string> {l[j]};
                dict.Add(i, newListItem);
            }
        }

    }
}
然后,如果我有一个10和11,我需要清理掉所有剩余的物品

我看过

这些都接近我所需要的,但它们不是我所需要的完整解决方案,因此我不认为这是我的问题的重复,并将感谢所有可能的帮助

谢谢


Simon

如果我没听错,您希望将初始列表按项目索引按模分解为,例如,
3
组:

  • 第1组-第0组、第3组、第6组。。。第三项
  • 第二组-第一、第四、第七。。。第3+1项
  • 3d组-第二、第五、第八。。。第3+2项
  • 您可以尝试在Linq的帮助下对它们进行分组:

    1, 4, 7
    
    2, 5, 8
    
    3, 6, 9
    
      List<List<string>> result = l
        .Select((value, index) => new {
          value,
          index
        })
       .GroupBy(item => item.index % listsToSplit, item => item.value)
       .Select(chunk => chunk.ToList())
       .ToList();
    
      var dict = l
        .Select((value, index) => new {
          value,
          index
        })
        .GroupBy(item => item.index % listsToSplit, item => item.value)
        .ToDictionary(chunk => chunk.Key, chunk => chunk.ToList());