问题描述
structResPoint{publicstringname;publicdoubleX;publicdoubleY;}List<ResPoint>pt=newList<ResPoint>;pt.Add(newResPoint{"1",10,20})pt.Add(newResPoint{"2",50,12})。。。增加很多数据请问在pt里如何按照X的大小进行排序?最后得到排序后pt
解决方案
本帖最后由 mosangbike 于 2014-11-25 16:16:07 编辑
解决方案二:
可以用linq的orderby或者自定义排序(实现IComparable)
解决方案三:
楼上正解我来凑字数
解决方案四:
OrderBy1.简单形式这个例子Linq使用orderby按雇用日期对雇员进行排序:varq=fromeindb.Employeesorderbye.HireDateselecte;2.带条件形式注意:Where和orderby的顺序并不重要。而在T-SQL中,Where和orderby有严格的位置限制。varq=fromoindb.Orderswhereo.ShipCity=="London"orderbyo.Freightselecto;语句描述:使用where和orderby按运费进行排序。3.降序排序varq=frompindb.Productsorderbyp.UnitPricedescendingselectp;4.ThenBy语句描述:Linq使用orderby对客户进行排序:varq=fromcindb.Customersorderbyc.City,c.ContactNameselectc;5.ThenByDescending这两个扩展方式都是用在orderby/orderbyDescending之后的,第一个ThenBy/ThenByDescending扩展方法作为第二位排序依据,第二个ThenBy/ThenByDescending则作为第三位排序依据,以此类推varq=fromoindb.Orderswhereo.EmployeeID==1orderbyo.ShipCountry,o.Freightdescendingselecto;语句描述:Linq使用orderby先按发往国家再按运费从高到低的顺序对EmployeeID1的订单进行排序。6.带GroupBy形式varq=frompindb.Productsgrouppbyp.CategoryIDintogorderbyg.Keyselectnew{g.Key,MostExpensiveProducts=fromp2ingwherep2.UnitPrice==g.Max(p3=>p3.UnitPrice)selectp2};语句描述:Linq使用orderby、Max和GroupBy得出每种类别中单价最高的产品,并按CategoryID对这组产品进行排序。
解决方案五:
长姿势了引用3楼smthgdin的回复:
OrderBy1.简单形式这个例子Linq使用orderby按雇用日期对雇员进行排序:varq=fromeindb.Employeesorderbye.HireDateselecte;2.带条件形式注意:Where和orderby的顺序并不重要。而在T-SQL中,Where和orderby有严格的位置限制。varq=fromoindb.Orderswhereo.ShipCity=="London"orderbyo.Freightselecto;语句描述:使用where和orderby按运费进行排序。3.降序排序varq=frompindb.Productsorderbyp.UnitPricedescendingselectp;4.ThenBy语句描述:Linq使用orderby对客户进行排序:varq=fromcindb.Customersorderbyc.City,c.ContactNameselectc;5.ThenByDescending这两个扩展方式都是用在orderby/orderbyDescending之后的,第一个ThenBy/ThenByDescending扩展方法作为第二位排序依据,第二个ThenBy/ThenByDescending则作为第三位排序依据,以此类推varq=fromoindb.Orderswhereo.EmployeeID==1orderbyo.ShipCountry,o.Freightdescendingselecto;语句描述:Linq使用orderby先按发往国家再按运费从高到低的顺序对EmployeeID1的订单进行排序。6.带GroupBy形式varq=frompindb.Productsgrouppbyp.CategoryIDintogorderbyg.Keyselectnew{g.Key,MostExpensiveProducts=fromp2ingwherep2.UnitPrice==g.Max(p3=>p3.UnitPrice)selectp2};语句描述:Linq使用orderby、Max和GroupBy得出每种类别中单价最高的产品,并按CategoryID对这组产品进行排序。
引用3楼smthgdin的回复:
OrderBy1.简单形式这个例子Linq使用orderby按雇用日期对雇员进行排序:varq=fromeindb.Employeesorderbye.HireDateselecte;2.带条件形式注意:Where和orderby的顺序并不重要。而在T-SQL中,Where和orderby有严格的位置限制。varq=fromoindb.Orderswhereo.ShipCity=="London"orderbyo.Freightselecto;语句描述:使用where和orderby按运费进行排序。3.降序排序varq=frompindb.Productsorderbyp.UnitPricedescendingselectp;4.ThenBy语句描述:Linq使用orderby对客户进行排序:varq=fromcindb.Customersorderbyc.City,c.ContactNameselectc;5.ThenByDescending这两个扩展方式都是用在orderby/orderbyDescending之后的,第一个ThenBy/ThenByDescending扩展方法作为第二位排序依据,第二个ThenBy/ThenByDescending则作为第三位排序依据,以此类推varq=fromoindb.Orderswhereo.EmployeeID==1orderbyo.ShipCountry,o.Freightdescendingselecto;语句描述:Linq使用orderby先按发往国家再按运费从高到低的顺序对EmployeeID1的订单进行排序。6.带GroupBy形式varq=frompindb.Productsgrouppbyp.CategoryIDintogorderbyg.Keyselectnew{g.Key,MostExpensiveProducts=fromp2ingwherep2.UnitPrice==g.Max(p3=>p3.UnitPrice)selectp2};语句描述:Linq使用orderby、Max和GroupBy得出每种类别中单价最高的产品,并按CategoryID对这组产品进行排序。
引用3楼smthgdin的回复:
OrderBy1.简单形式这个例子Linq使用orderby按雇用日期对雇员进行排序:varq=fromeindb.Employeesorderbye.HireDateselecte;2.带条件形式注意:Where和orderby的顺序并不重要。而在T-SQL中,Where和orderby有严格的位置限制。varq=fromoindb.Orderswhereo.ShipCity=="London"orderbyo.Freightselecto;语句描述:使用where和orderby按运费进行排序。3.降序排序varq=frompindb.Productsorderbyp.UnitPricedescendingselectp;4.ThenBy语句描述:Linq使用orderby对客户进行排序:varq=fromcindb.Customersorderbyc.City,c.ContactNameselectc;5.ThenByDescending这两个扩展方式都是用在orderby/orderbyDescending之后的,第一个ThenBy/ThenByDescending扩展方法作为第二位排序依据,第二个ThenBy/ThenByDescending则作为第三位排序依据,以此类推varq=fromoindb.Orderswhereo.EmployeeID==1orderbyo.ShipCountry,o.Freightdescendingselecto;语句描述:Linq使用orderby先按发往国家再按运费从高到低的顺序对EmployeeID1的订单进行排序。6.带GroupBy形式varq=frompindb.Productsgrouppbyp.CategoryIDintogorderbyg.Keyselectnew{g.Key,MostExpensiveProducts=fromp2ingwherep2.UnitPrice==g.Max(p3=>p3.UnitPrice)selectp2};语句描述:Linq使用orderby、Max和GroupBy得出每种类别中单价最高的产品,并按CategoryID对这组产品进行排序。
解决方案六:
支持Linq的话直接Linq的orderby
解决方案七:
老一点的方法,类实现IComparable接口,然后在list.sort();
解决方案八:
List<ResPoint>pt=newList<ResPoint>;pt.Add(newResPoint{"1",10,20})pt.Add(newResPoint{"2",50,12})pt.Sort((x,y)=>{returnx>y?1:-1});