gpt4 book ai didi

c# - 重复 LINQ 查询

转载 作者:太空狗 更新时间:2023-10-29 21:30:49 24 4
gpt4 key购买 nike

鉴于我当前的扩展方法:

public static List<char> rotate(this List<char> currentList, int periodes) {
if (periodes != 1) {
int x = currentList.Count() - 1;
return rotate(currentList.Skip(x).
Concat(currentList.Take(x)).ToList<char>(), periodes - 1);
}
return currentList;
}

原始状态:

ring = new List<char>() { 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j' };

ring.rotate(10); 的当前结果

J A B C D E F G H I
I J A B C D E F G H
H I J A B C D E F G
G H I J A B C D E F
F G H I J A B C D E Recursive Steps
E F G H I J A B C D
D E F G H I J A B C
C D E F G H I J A B
B C D E F G H I J A

A B C D E F G H I J      Result

有什么方法可以摆脱这个 while 循环,并有机会将重复集成到 LINQ 查询中吗?

最佳
亨里克

最佳答案

跳过 i 并连接 i

public static class Ex
{
public static List<char> Rotate(this List<char> c, int i)
{
i %= c.Count;
return c.Skip(i).Concat(c.Take(i)).ToList();
}
}

class Program
{
static void Main()
{
List<char> chars = new List<char>();

for (int i = 65; i < 75; ++i)
{
chars.Add((char)i);
}

var r1 = chars.Rotate(10); // A B C D E F G H I J
var r2 = chars.Rotate(1); // B C D E F G H I J A
var r3 = chars.Rotate(101); // B C D E F G H I J A
var r4 = chars.Rotate(102); // C D E F G H I J A B

Console.ReadLine();
}
}

关于c# - 重复 LINQ 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3832344/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com