将两个不同的列表排序到相同的位置

本文关键字:排序 列表 位置 两个 | 更新日期: 2023-09-27 18:20:44

我想对人名列表进行排序,但必须对其他联系人列表进行排序才能保持相同的索引,以便联系人与姓名相对应。我有这个班:

        List<string> name = new List<string>();
        List<string> cellphone = new List<string>();
        public void setName(string value)
        {
            name.Add(value);
        }
        public void setCellphone(string value)
        {
            cellphone.Add(value);
        }
        public List<string> getNames()
        {
            return name;
        }
        public List<string> getCellphones()
        {
            return cellphone;
        }

现在我想把它们分类;

例如:

列表1:-Joseph-Anna

列表2:-+35192345678-+35191234567

结果必须是:

列表1:-安娜-Joseph

列表2:-+351931234567-+3351912345678

将两个不同的列表排序到相同的位置

您应该使用单个类来保存一个人的信息。

现在回答问题:Zip+OrderBy+2*(Select+ToList)可以按相同顺序为您提供排序列表。类似于:

 var pairs = name.Zip(cellphone, (name, phone)=> new {name, phone})
     .OrderBy(item => item.name);
 name = pairs.Select(item => item.name).ToList();
 cellphone = pairs.Select(item => item.phone).ToList();

您应该使用Dictionary而不是2个Lists。请参见此处:http://www.dotnetperls.com/dictionary