在 C# 中,我有一個這樣的串列:
var sequence = new List<int> { 10, 7, 10, 1, 10, 5, 10, 8 , 11 , 50 };
我想通過遍歷序列來創建 10 個單獨的串列,并且在每次迭代中選擇三個元素而不是一個元素。

為此,我在下面撰寫了代碼,但它有缺陷,必須是更好的方法:
var sequence = new List<int> { 10, 7, 10, 1, 10, 5, 10, 8 , 11 , 50 };
var lists = Enumerable.Range(0, 10)
.Select(i =>
{
var list = sequence.GetRange(i, 3);
return list;
}).ToList();
PS:功能方式我的意思是這樣的:
var lists = Sequence.Window(sourceSafed.Skip(1)).....Select(window => window.Take(3))......ToList();
uj5u.com熱心網友回復:
正如評論已經指出的那樣,您的代碼沒有任何問題。為了讓它看起來更 LINQish,你可以寫:
var sequence = new List<int> { 10, 7, 10, 1, 10, 5, 10, 8 , 11 , 50 };
var lists = Enumerable.Range(0, 10)
.Select(i => sequence.Skip(i).Take(3))
// If for further usage it makes sense to materialize each subset
//.Select(i => sequence.Skip(i).Take(3).ToList())
.ToList();
uj5u.com熱心網友回復:
您可以使用此方法解決您的問題。
List<int> sequence = new List<int>() { 10, 7, 10, 1, 10, 5, 10, 8 , 11 , 50 };
for (int i = 0; i < sequence.Count-1; i )
{
var lists= sequence.Skip(i).Take(3).ToList();
foreach (var x in lists)
{
Console.Write(x);
}
Console.WriteLine();
}
或者您可以使用此代碼 Linq
List<int> sequence = new List<int>() { 10, 7, 10, 1, 10, 5, 10, 8 , 11 , 50 };
for (int i = 0; i < sequence.Count - 1; i )
{
sequence.Skip(i).Take(3).ToList().ForEach(x => Console.Write(x));
Console.WriteLine();
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/525626.html
