每次要排序都得重新创建一个对象,让lst排序后赋值个这个对象,烦死了!
创建一个对象的方法:List<student> a =lst.OrderByDescneding(n=>double.Parse(n.Grade)).ToList();
不创建另外一个对象怎么实现按成绩排序?
6 个解决方案
#1
随便一本讲数据结构的书上面都至少有4种排序算法。
或者你用List的Sort方法来排
或者你用List的Sort方法来排
#2
那你就看网上的快速排序算法,自己套进去就是了,就内部交换位置
或者
lst =lst.OrderByDescneding(n=>double.Parse(n.Grade)).ToList();
或者
lst =lst.OrderByDescneding(n=>double.Parse(n.Grade)).ToList();
#3
lst.Sort((n1, n2) => n2.Grade - n1.Grade)
#4
lst.Sort((n1, n2) =>
{
double err = double.Parse(n1.Grade) - double.Parse(n2.Grade);
if (err > 0)
return -1;
else if (err < 0)
return 1;
else
return 0;
});
#5
正解
排序完直接再付回给自己就是了
#6
你的理解就是错的。
用ToList()只是创建集合而已,元素本身不会被创建,性能开销很小的。
你实在要做这种无聊的事情那也好办,你用linq排序算出每个元素的排序号,然后再用原来的list去交换元素位置。
用ToList()只是创建集合而已,元素本身不会被创建,性能开销很小的。
你实在要做这种无聊的事情那也好办,你用linq排序算出每个元素的排序号,然后再用原来的list去交换元素位置。
#1
随便一本讲数据结构的书上面都至少有4种排序算法。
或者你用List的Sort方法来排
或者你用List的Sort方法来排
#2
那你就看网上的快速排序算法,自己套进去就是了,就内部交换位置
或者
lst =lst.OrderByDescneding(n=>double.Parse(n.Grade)).ToList();
或者
lst =lst.OrderByDescneding(n=>double.Parse(n.Grade)).ToList();
#3
lst.Sort((n1, n2) => n2.Grade - n1.Grade)
#4
lst.Sort((n1, n2) =>
{
double err = double.Parse(n1.Grade) - double.Parse(n2.Grade);
if (err > 0)
return -1;
else if (err < 0)
return 1;
else
return 0;
});
#5
正解
排序完直接再付回给自己就是了
#6
你的理解就是错的。
用ToList()只是创建集合而已,元素本身不会被创建,性能开销很小的。
你实在要做这种无聊的事情那也好办,你用linq排序算出每个元素的排序号,然后再用原来的list去交换元素位置。
用ToList()只是创建集合而已,元素本身不会被创建,性能开销很小的。
你实在要做这种无聊的事情那也好办,你用linq排序算出每个元素的排序号,然后再用原来的list去交换元素位置。