当前位置: 首页 > 编程语言 > C#

分享_11110

时间:2023-04-10 15:35:13 C#

在C#中对列表进行排序(使用各种参数)在C#中对列表进行排序(使用各种参数)我有一个对象列表。该对象具有各种字段,如年龄和姓名现在有时我想按名字排序,有时按年龄排序。额外有时会增加订单,有时会减少订单。现在我明白我应该在我的对象中实现Comparable接口并覆盖CompareTo方法。但是,当我想支持各种排序顺序时,我该怎么做呢?我是否必须在我的对象中设置排序顺序,或者以某种方式通过排序方法调用传递排序顺序?方法调用可以做任何事情;不需要比较器:list.Sort((x,y)=>string.Compare(x.Name,y.Name));list.Sort((x,y)=>y.Age.CompareTo(x.Age));//desclist.Sort((x,y)=>x.Age.CompareTo(y.Age));//asc注意第二个是降序的,通过比较Swapx/y。如果您正在使用List并希望对列表进行排序,则Sort函数提供了一个接受Comparison的重载。您可以使用它来为列表提供不同的比较。例如,按年龄排序:list.Sort((x,y)=>x.Age.CompareTo(y.Age));按名称排序:list.Sort((x,y)=>string.Compare(x.Name,y.Name));要降序排序,只需反转参数即可。或者,您可以使用LINQ针对您的列表创建各种查询,以您喜欢的任何顺序提供结果,但这不会影响基础列表(它是好是坏由您决定):varbyAge=list.OrderBy(x=>x.Age);varbyName=list.OrderBy(x=>x.Name);要按降序排序,请使用OrderByDescending而不是OrderBy。您还可以使用LINQ来处理此问题:varsortedByAge=myList.OrderBy(i=>i.Age);varsortedByName=myList.OrderBy(i=>i.Name);如果您想就地处理排序,可以使用List.Sort(Comparison)://按年龄排序myList.Sort((l,r)=>l.Age.CompareTo(r.Age));//按名称排序myList.Sort((l,r)=>l.Name.CompareTo(r.Name));你可以使用linq对对象数据进行排序somethinglike上面是C#LearningTutorial:SortingaListwithC#(withvariousparameters)分享的内容,如果对大家有用,需要进一步了解C#学习教程。希望大家多多关注——varquery=fromcustincustomersorderbycust.Ageascendingselectcust;本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: