Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/42.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 放入列表的最后10个元素<&燃气轮机;进入其他列表<&燃气轮机;_C#_List_Sorting_Collections - Fatal编程技术网

C# 放入列表的最后10个元素<&燃气轮机;进入其他列表<&燃气轮机;

C# 放入列表的最后10个元素<&燃气轮机;进入其他列表<&燃气轮机;,c#,list,sorting,collections,C#,List,Sorting,Collections,我有一个列表,里面装满了我的类的对象。那台很好用。 现在我想将最后10个元素加载到一个新列表中,该列表是颠倒排序的。因此,最后一个元素将是新列表中的第一个元素,第十个元素将是新列表中的最后一个元素 通常这不应该是一项艰巨的任务,但我不知道。。。它以正确的方式迭代,在我看来应该有效 Both Lists<> are Lists<lastChanges>. lastChange is my class. 因此循环将运行两次 在第一次运行中,将“lastArt”设置为等于“e

我有一个列表,里面装满了我的类的对象。那台很好用。 现在我想将最后10个元素加载到一个新列表中,该列表是颠倒排序的。因此,最后一个元素将是新列表中的第一个元素,第十个元素将是新列表中的最后一个元素

通常这不应该是一项艰巨的任务,但我不知道。。。它以正确的方式迭代,在我看来应该有效

Both Lists<> are Lists<lastChanges>. lastChange is my class.
因此循环将运行两次

在第一次运行中,将“lastArt”设置为等于“elems”的第二个对象,然后添加到“items”

在第二次运行中,第一项将添加到“items”

所以,这两个项目都被添加到“项目”中,一切都很好

但是为什么我总是出错呢? 两个对象都是明确的!=空

谢谢大家!

编辑:

我总是在这一行中得到一个“NullReferenceException”:

items.Add(lastArt);
两个对象都是明确的!=null,所以在我看来这一定是迭代中的一个错误。

尝试使用LINQ

var result = data.Skip(data.Count - 10).Take(10);
List<SomeType> list = new List<SomeType>(result.Reverse());
var result=data.Skip(data.Count-10)、Take(10);
列表=新列表(result.Reverse());
尝试使用LINQ

var result = data.Skip(data.Count - 10).Take(10);
List<SomeType> list = new List<SomeType>(result.Reverse());
var result=data.Skip(data.Count-10)、Take(10);
列表=新列表(result.Reverse());

使循环计数更容易。

List<MyClass> lastElements = elems.Reverse().Take(10).ToList();
不要试图跟踪从最后一个元素开始的
i
倒计时,而是从1开始,然后向上计数

int numElements = 10; // or however you want from the end
for (int i = 1; i <= numElements && i <= elems.Count; i++)
   lastItems.Add(elems[elems.Count - i]);
int numElements=10;//或者你想从最后得到什么

对于(int i=1;i,循环计数更容易。

List<MyClass> lastElements = elems.Reverse().Take(10).ToList();
不要试图跟踪从最后一个元素开始的
i
倒计时,而是从1开始,然后向上计数

int numElements = 10; // or however you want from the end
for (int i = 1; i <= numElements && i <= elems.Count; i++)
   lastItems.Add(elems[elems.Count - i]);
int numElements=10;//或者从结尾开始按您想要的方式

对于(int i=1;i
列表
应该是什么?
列表
?您会遇到什么错误?请创建一个小示例来重现该问题。您可以使用Linq
newList=oldList.Reverse()。获取(10).ToList();
并在
中添加(x=>x!=null)
(如果需要)。“我总是在这一行中得到一个'NullReferenceException':
items.Add(lastArt);
”-然后
items
null
。您需要将其初始化为
new List
。在您的示例中,列表包含2个元素,我认为这不会运行两次。根据您的代码,I=(2-1)so 1,并检查这是否大于(2-2)或者0,它是。第一个循环将运行。但是,它将i减少1,因此现在是0。然后,逻辑将检查0>0,它不是,所以不会运行。一个
列表
假设是什么?
列表
?您会得到什么错误?请创建一个小示例来重现该问题。您可以使用Linq
newList来完成此操作=oldList.Reverse().Take(10).ToList();
并在需要时添加一个
Where(x=>x!=null)
。“我总是在这一行中得到一个'NullReferenceException':
items.add(lastArt);
“-then
items
null
。您需要将其初始化为
new List
。在您的示例中,列表包含2个元素,我认为这不会运行两次。根据您的代码,I=(2-1)so 1,并检查是否大于(2-2)或者0,它是。第一个循环将运行。但是,它将i减少1,因此现在是0。然后,逻辑将检查0是否大于0,它不是,所以不会运行。或者甚至
data.Skip(data.Count-10)。Take(10).ToList();
但是OP首先要最后一个元素。您需要反转结果。在这种情况下,甚至
data.Skip(data.Count-10).ToList();
会起作用。^ ^^^--反转它可以是
data.Skip(data.Count-10).Reverse().ToList();
这不是问题的所在。甚至
data.Skip(data.Count-10).接受(10).ToList();
,但OP需要先反转最后一个元素。在这种情况下,甚至是
data.Skip(data.Count-10).ToList();
会起作用。^ ^--反转它可以是
data.Skip(data.Count-10).Reverse().ToList()这不是问题所在。Linq示例将修复空引用异常,因为它创建了一个新列表。Linq示例将修复空引用异常,因为它创建了一个新列表。