按方法结果对List <T>集合进行排序.

Yar*_*ara 0 c# sorting lambda

我有下一个班级和这个班级的集合.我如何通过asc对Perimeter()进行排序?

    public class Circle
    {
        private double _r;

        public Double Radius
        {
            get { return _r; }
            set { _r = value; }
        }

        public double Perimeter ()
        {
            return 2*Math.PI*Radius;
        }
    }
...
var lst = new List<Circle>();
Run Code Online (Sandbox Code Playgroud)

Zeb*_*ebi 7

lst = lst.OrderBy(x => x.Perimeter()).ToList()应该诀窍.还有一种OrderByDesc方法可供选择.

当然你也可以像Rob4md那样使用LINQ查询语法,但请记住,所有LINQ查询都返回一个IEnumerable并且是懒惰地执行的.
你应该使用一个急切的操作,ToList()或者ToArray()在它有意义的时候立即执行它们,因为你可能会多次执行枚举.

您可以查看MSDN上的101 LINQ Samples页面.关于如何使用LINQ有许多示例,OrderBy也被涵盖.