我有一个名为person
的类,其中包含id and name
。我有一个person
的列表。我想sort the list by Id
。然后,排序与same ID by name
和转换的name to uppercase letters
,最后,重复的项目被删除。
List<person> list = new List<person>();
list.Add(new person(112, "Bname"));
list.Add(new person(111, "Cname"));
list.Add(new person(112, "Aname"));
list.Add(new person(111, "Aname"));
list.Add(new person(114, "Aname"));
期望输出:
111,ANAME
111,CNAME
112,ANAME
112,BNAME
114,ANAME
我的代码:
for (int i = 0; i < list.Count - 1; i++)
{
if (list[i + 1].Id < list[i + 1].Id && string.Compare(list[i + 1].Name, list[i + 1].Name) > 0)
{
person temp = list[i];
list[i] = list[i + 1];
list[i + 1] = temp;
i = -1; //sort from lowest out of order index
}
}
for (int i = 0; i < list.Count - 1; i++)
{
list[i].Name= list[i].Name.ToUpper();
if (list[i] == list[i + 1])
list.Remove(list[i + 1]);
}
但是结果是错的,谁能帮帮我?
2条答案
按热度按时间efzxgjgh1#
您可以使用linq轻松地完成所有这些操作。
1-使用
OrderBy(x => x.Id
对ID为的列表排序2-使用
ThenBy(x=>x.Name)
按名称对具有相同ID的对象进行排序3-使用。选择(x=〉new {Id=x.Id,Name= x.Name.ToUpper()})将名称转换为大写
4-使用
.Distinct()
删除重复项scyqe7ek2#
首先重写
person
类的Equals
,以比较两个对象,如则可以使用
linq
命名空间