【发布时间】:2019-08-01 10:26:38
【问题描述】:
我有一个从索引 0 到 19 的 20 条曲线的列表,我想获得它的 5 个具有索引的子列表:
{0,5,10,15},{1,6,11,16},{2,7,12,17},{3,8,13,18},{4,9,14,19}
对于子列表的后续元素,是否有任何通过开始索引和过程来进行子列表的方法。
【问题讨论】:
-
您可以使用 LINQ 方法来实现它。查看this问题。
标签: c#
我有一个从索引 0 到 19 的 20 条曲线的列表,我想获得它的 5 个具有索引的子列表:
{0,5,10,15},{1,6,11,16},{2,7,12,17},{3,8,13,18},{4,9,14,19}
对于子列表的后续元素,是否有任何通过开始索引和过程来进行子列表的方法。
【问题讨论】:
标签: c#
对于这样的列表:
List<int> list = new List<int>{ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19 };
您可以使用此代码:
List<int> subList1 = list.Skip(0).Where((x, i) => i % 5 == 0).ToList();
List<int> subList2 = list.Skip(1).Where((x, i) => i % 5 == 0).ToList();
List<int> subList3 = list.Skip(2).Where((x, i) => i % 5 == 0).ToList();
List<int> subList4 = list.Skip(3).Where((x, i) => i % 5 == 0).ToList();
List<int> subList5 = list.Skip(4).Where((x, i) => i % 5 == 0).ToList();
或者在for循环中执行:
List<int>[] subLists = new List<int>[5];
for (int i = 0; i < subLists.Length; i++)
{
subLists[i] = list.Skip(i).Where((x, j) => j % 5 == 0).ToList();
}
Skip(i) 用于选择第一个索引,Where((x, j) => j % 5 == 0) 用于通过检查索引模 5 是否为零来获取每 5 个元素。
【讨论】:
这就是你要找的。p>
var list = new List<int>();
for(var i = 0; i<=19; i++) list.Add(i);
var list0 = list.Where(x => x % 5 == 0).ToList();
var list1 = list.Where(x => x % 5 == 1).ToList();
var list2 = list.Where(x => x % 5 == 2).ToList();
var list3 = list.Where(x => x % 5 == 3).ToList();
var list4 = list.Where(x => x % 5 == 4).ToList();
【讨论】:
您可以在列表上使用循环并将索引取模 5 来获取子列表的索引,然后将元素添加到其中。
例子:
public static void Main(string[] args)
{
List<int> outerList = new List<int>();
for (int i = 0; i < 20; i++)
{
outerList.Add(i);
}
List<List<int>> innerLists = new List<List<int>>();
for (int i = 0; i < 5; i++)
{
innerLists.Add(new List<int>());
}
for (int i = 0; i < outerList.Count; i++)
{
innerLists[i % 5].Add(outerList[i]);
}
Console.WriteLine("outer List:");
foreach (int i in outerList)
{
Console.Write($" { i } ");
}
Console.WriteLine();
Console.WriteLine("inner List:");
foreach (List<int> l in innerLists)
{
foreach (int i in l)
{
Console.Write($" { i } ");
}
Console.WriteLine();
}
Console.WriteLine();
Console.Read();
}
【讨论】: