如何对通用列表DESC和ASC进行排序?使用LINQ而不使用LINQ?我正在使用VS2008.
class Program
{
static void Main(string[] args)
{
List<int> li = new List<int>();
li.Add(456);
li.Add(123);
li.Add(12345667);
li.Add(0);
li.Add(1);
li.Sort();
foreach (int item in li)
{
Console.WriteLine(item.ToString() + "\n");
}
Console.ReadKey();
}
}
Run Code Online (Sandbox Code Playgroud)
Ant*_*ram 215
有了Linq
var ascendingOrder = li.OrderBy(i => i);
var descendingOrder = li.OrderByDescending(i => i);
Run Code Online (Sandbox Code Playgroud)
没有Linq
li.Sort((a, b) => a.CompareTo(b)); // ascending sort
li.Sort((a, b) => -1* a.CompareTo(b)); // descending sort
Run Code Online (Sandbox Code Playgroud)
请注意,没有Linq,列表本身正在排序.使用Linq,您将获得列表的有序枚举,但列表本身并未更改.如果要改变列表,可以将Linq方法更改为类似的方法
li = li.OrderBy(i => i).ToList();
Run Code Online (Sandbox Code Playgroud)
San*_*nen 65
没有Linq:
上升:
li.Sort();
Run Code Online (Sandbox Code Playgroud)
降:
li.Sort();
li.Reverse();
Run Code Online (Sandbox Code Playgroud)
我正在检查上面的所有答案,并想再添加一个附加信息。我想按 DESC 顺序对列表进行排序,并且我正在寻找对于更大输入更快的解决方案,并且我之前使用过这种方法:-
li.Sort();
li.Reverse();
Run Code Online (Sandbox Code Playgroud)
但是我的测试用例因超出时间限制而失败,因此以下解决方案对我有用:-
li.Sort((a, b) => b.CompareTo(a));
Run Code Online (Sandbox Code Playgroud)
所以最终的结论是,按降序排列列表的第二种方式比前一种快一点。
| 归档时间: |
|
| 查看次数: |
173535 次 |
| 最近记录: |