【问题标题】:Sorting list in c# with linq使用linq在c#中排序列表
【发布时间】:2020-04-01 06:57:20
【问题描述】:

我试图根据 ListaINT 中的整数顺序对名称(ListaSTR)进行排序。使用此解决方案检查了其他帖子,但现在正在为我工​​作。我是新手。我错过了什么?

using System.Collections.Generic;
using System;
using System.IO;
using System.Text;
using System.Linq;


namespace Simple
{
    public static class Program
    {
        static void Main()
        {
            List<string> ListaSTR = new List<string>{"Alberto","Bruno","Carlos","Mario","Pepe","Rodrigo"};
            List<int> ListaINT = new List<int>{4,6,1,8,2,5};

            List<string> O_ListaSTR = OrderBySequence(ListaSTR, ListaINT, Func<string,string>);

            Console.WriteLine(O_ListaSTR);

            Console.ReadLine();
        }

        public static List<string> OrderBySequence<string, int>(this List<string> source, List<int> order, Func<string,int> idSelector)
        {
            var lookup = source.ToLookup(idSelector, t => t);
            foreach (var id in order)
            {
                foreach (var t in lookup[id])
                {
                   yield return t;
                }
            }
        }   
    }
}

【问题讨论】:

    标签: list linq sorting


    【解决方案1】:

    试试这个:

        static void Main(string[] args)
        {
            List<string> ListaSTR = new List<string> { "Alberto", "Bruno", "Carlos", "Mario", "Pepe", "Rodrigo" };
            List<int> ListaINT = new List<int> { 4, 6, 1, 3, 2, 5 };
    
            var O_ListaSTR = ListaSTR.OrderBySequence(ListaINT);
    
            Console.WriteLine(O_ListaSTR);
    
            Console.ReadLine();
        }
    

    您的扩展方法可以是这样的简单形式:

    public static IEnumerable<string> OrderBySequence(this List<string> source, List<int> order)
        {
            var result = new List<string>();
            foreach (var i in order)
            {
                result.Add(source[i - 1]);
            };
    
            return result;
        }
    

    【讨论】:

    • 工作正常。谢谢:)
    猜你喜欢
    • 1970-01-01
    • 2021-11-24
    • 2018-11-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-16
    • 1970-01-01
    • 2021-10-23
    相关资源
    最近更新 更多