我正在研究一种动态解决方案,我需要根据传入的变量将一个大列表分成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)