C# 如何保留列表中最新的X元素

C# 如何保留列表中最新的X元素,c#,arrays,collections,C#,Arrays,Collections,我需要使用一个数据结构来保存列表中最新的X元素。一位同事给了我这个解决方案: int start = 0; const int latestElementsToKeep = 20; int[] numbers = new int[latestElementsToKeep]; for (int i = 0; i < 30; i++) { numbers[start] = i;

我需要使用一个数据结构来保存列表中最新的X元素。一位同事给了我这个解决方案:

        int start = 0;
        const int latestElementsToKeep = 20;
        int[] numbers = new int[latestElementsToKeep];
        for (int i = 0; i < 30; i++)
        {
            numbers[start] = i;
            if (start < numbers.Length - 1)
            {
                start++;
            }
            else
            {
                start = 0;
            }
        }
int start=0;
最新版本的const int-latestElementsToKeep=20;
int[]number=新int[latestElementsToKeep];
对于(int i=0;i<30;i++)
{
数字[开始]=i;
如果(开始<编号.长度-1)
{
启动++;
}
其他的
{
开始=0;
}
}
因此,运行此操作后,数字数组中有数字19-29(最新的20个数字)


这很好,但在现实世界中很难使用。有更简单的方法吗?

这似乎是一个很好的标准。我唯一的建议是为它创建一个类或下载一个可用的库。在谷歌搜索结果的顶部似乎有一些前景看好的搜索结果。

这似乎是一个相当标准的搜索结果。我唯一的建议是为它创建一个类或下载一个可用的库。在谷歌搜索结果的顶部似乎有一些前景看好的搜索结果。

更简单的方法是:

int[] numbers = new int[latestElementsToKeep];
for (int i = 0; i < 30; i++)
    numbers[i % latestElementsToKeep] = i;
int[]number=新的int[latestElementsToKeep];
对于(int i=0;i<30;i++)
数字[i%Latestlementstokeep]=i;
返回将
i
除以
latestElementsToKeep
的提示。当
i
到达
latestElementsToKeep
时,您将从头开始。

更简单的方法:

int[] numbers = new int[latestElementsToKeep];
for (int i = 0; i < 30; i++)
    numbers[i % latestElementsToKeep] = i;
int[]number=新的int[latestElementsToKeep];
对于(int i=0;i<30;i++)
数字[i%Latestlementstokeep]=i;

返回将
i
除以
latestElementsToKeep
的提示。当
i
到达
latestElementsToKeep
时,您将从头开始。

对于一系列数字,您可以使用:

int keep = 20;
int lastItem = 29;
int[] numbers = Enumerable.Range(lastItem - keep, keep).ToArray();
int keep = 20;
someType[] items = someCollection.Skip(someCollection.Count() - keep).ToArray();
要从任何集合(您可以从中获取大小)中获取最后一个项目,您可以使用:

int keep = 20;
int lastItem = 29;
int[] numbers = Enumerable.Range(lastItem - keep, keep).ToArray();
int keep = 20;
someType[] items = someCollection.Skip(someCollection.Count() - keep).ToArray();

对于一系列数字,您可以使用:

int keep = 20;
int lastItem = 29;
int[] numbers = Enumerable.Range(lastItem - keep, keep).ToArray();
int keep = 20;
someType[] items = someCollection.Skip(someCollection.Count() - keep).ToArray();
要从任何集合(您可以从中获取大小)中获取最后一个项目,您可以使用:

int keep = 20;
int lastItem = 29;
int[] numbers = Enumerable.Range(lastItem - keep, keep).ToArray();
int keep = 20;
someType[] items = someCollection.Skip(someCollection.Count() - keep).ToArray();

19-29是最后10个数字,打字错误?您想对这些集合执行什么操作?我需要非常频繁地处理列表,因此我想将自己限制为实时出现的最新X元素。@TravisJ:19-29实际上是最后11个数字…19-29是最后10个数字,输入错误?您想对这些集合执行什么操作?我需要频繁地处理列表,所以我想限制自己使用实时出现的最新X元素。@TravisJ:19-29实际上是最后11个数字。。。