考虑下面的代码
class Pin
{
string Name; //can be either Numerical or AlphaNum
}
enum Place
{
Left,
Right
}
class Map
{
Pin pin;
Place Place;
Rectangle Rect;
}
Pin
的 Name
字段只能是数字或字母数字,所以我通过字符串来支持两者。
现在我的问题是如果我有一个 List<Map>
如何按 Pin 的名称字段对列表进行排序?我尝试了下面的代码,但无法编译:
map.Sort((x, y) => x.Pin.Name.CompareTo(y.Pin.Name));
//Cannot implicitly convert type 'void' to 'System.Collections.Generic.List<DataModels.PinMap>
最佳答案
您显示的代码不会产生该编译器错误。我假设您正在尝试将结果分配给新变量或自身。像这样:
map = map.Sort(...);
因为 List<T>.Sort
这是不可能或没有必要的正在执行 就地 排序,即它更改了原始列表,因此不返回任何内容。因此,只需删除赋值即可消除编译器错误。
如果您不想就地排序,只需使用 Enumerable.OrderBy
结合 ToList
生成新列表:
var result = map.OrderBy(x => x.pin.Name).ToList();
关于c# - 按对象的内部字段排序 List<T>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12158391/