按对象属性排序`List <object>`

Sae*_*ani 0 c# linq sorting ienumerable object

我有一些不同的对象,所有这些对象都有一个名为的整数字段Place.有没有办法在不知道实际对象是什么的情况下整理这个列表?我的意思是只访问该Place字段并根据此编号对列表进行排序.可能使用linq或其他什么?

一些示例对象:

public class Car
{
    public int Place;
    //Other related fields
}

public class Human
{
    public int Place;
    //Other related fields
}

//Somwhere in program
List<object> GameObjects;
Run Code Online (Sandbox Code Playgroud)

dkn*_*ack 5

您应该从基类派生您的类.

public class Base
{
    public int Place;
}

public class Car : Base
{
    // other properties
}

public class Human : Base
{
    // other properties
}
Run Code Online (Sandbox Code Playgroud)

然后,您可以创建基本类型列表,添加人员和汽车.之后,您可以使用Linq SortOrderBy方法.

List<Base> list = new List<Base>();
list.Add(new Human { Place = 2 });
list.Add(new Car { Place = 1 });

var sortedList = list.Sort(x => x.Place);
Run Code Online (Sandbox Code Playgroud)

更多信息