C# 按可除数将一个列表拆分为多个列表
我正在研究一个动态解决方案,需要根据传入的变量将一个大列表拆分为x个列表 因为我正在处理的类非常复杂,为了得到一个最小的可复制问题,我将下面的代码装箱,100%地表示我的问题 我面临的问题是一个0除问题,代码如下 当我将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
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, 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());