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

时间:2013-07-02 22:19:38

标签: c# asp.net

我想对人名列表进行排序,但是其他联系人列表也必须排序以保持相同的索引,以便联系人对应于名称。 我上过这堂课:

        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:   - 约瑟夫    - 安娜

清单2:    - +351912345678    - +351931234567

结果必须是:

清单1:    - 安娜    - 约瑟夫

清单2:    - +351931234567    - +351912345678

2 个答案:

答案 0 :(得分:3)

你应该使用单一班级来掌握一个人的信息。

现在回答问题: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();

答案 1 :(得分:0)

您应该使用词典而不是2个列表。见这里:http://www.dotnetperls.com/dictionary