[如果我有用于对List<T>
进行排序的方法或lambda,例如使用宇宙飞船运算符(从the documentation:x <=> y
-如果x
Sort(Comparison<T>)
上有一个List<T>
方法,但是文档没有说明如何使用它。
例如,假设我想按长度对字符串列表进行排序,首先使用方法和lambda按升序排列,然后按降序排列:
using System;
using System.Collections.Generic;
namespace test
{
class Program
{
public static int ascendingMethod (String lhs, String rhs)
{
return lhs.Length <=> rhs.Length;
}
public static void Main()
{
function int(String lhs, String rhs) descendingLambda = (lhs, rhs) => rhs.Length <=> lhs.Length;
let list = scope List<String>();
list.Add("2Foobar");
list.Add("1Fooba");
list.Add("3Foob");
//sort using Descending lamdba
for(String s in list)
{
Console.WriteLine(s);
}
// sort using Ascending method
for(String s in list)
{
Console.WriteLine(s);
}
}
}
}
Comparison<T>
绑定到方法,然后使用List<T>.Sort(Comparison<T>)
。在String
示例中,可能看起来像这样:
using System;
using System.Collections.Generic;
namespace test
{
class Program
{
public static int ascendingMethod (String lhs, String rhs)
{
return lhs.Length <=> rhs.Length;
}
public static void Main()
{
Comparison<String> descendingLambdaComparison = scope (lhs, rhs) => rhs.Length <=> lhs.Length;
Comparison<String> ascendingMethodComparison = scope => ascendingMethod;
let list = scope List<String>();
list.Add("2Foobar");
list.Add("1Fooba");
list.Add("3Foob");
list.Sort(descendingLambdaComparison);
for(String s in list)
{
Console.WriteLine(s);
}
list.Sort(ascendingMethodComparison);
for(String s in list)
{
Console.WriteLine(s);
}
}
}
}