在给定排序方法或lambda的情况下,如何对列表进行排序?

问题描述 投票:0回答:1

[如果我有用于对List<T>进行排序的方法或lambda,例如使用宇宙飞船运算符(从the documentationx <=> y-如果x y为正,)如何使用该方法对列表进行排序?

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);
            }
        }
    }
}
list sorting beef
1个回答
0
投票
您可以分配lambda或将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); } } } }

© www.soinside.com 2019 - 2024. All rights reserved.