按可除数将一个列表分成多个列表

时间:2019-03-11 10:58:23

标签: c#

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

由于我正在使用的类非常复杂,为了获得最小的可复制问题,我选择了下面的代码来代表我的问题(100%)。

我面临的问题是以下代码的被0除的问题。

if (j % i == 0)更改为if (j % 3 == 0)时遇到的其他问题得到了"1", "4", "7"的结果。

当我考虑从if块中的列表中删除一项,并得到上面的更改

3个新列表,原始列表中剩余3个项目。

1、5、9

2,7,

3

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);
            }
        }

    }
}

}

理想地,我从中得到的是

的3个列表
1, 4, 7

2, 5, 8

3, 6, 9

然后,如果我有10和11,我需要清除所有剩余的物品。

我看过

Split List<string> into multiple lists

Split List into Sublists with LINQ

接近于我的需求,但它们并不是满足我需求的完整解决方案,因此,我不认为这是我的问题的重复,并希望获得所有帮助。

谢谢

西蒙(Simon)

0 个答案:

没有答案