【发布时间】:2012-08-22 21:50:02
【问题描述】:
考虑下面的代码
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(...);吗? -
听起来您正在尝试将 map 设置为等于调用 Sort 的结果。跳过它(因为 sort 将重新排列您正在排序的列表中的元素)或使用 map = map.OrderBy(x => x.pin.Name).ToList();
-
@MarcGravell 看来我做错了分配,我的意思是在方法中返回排序结果。但我关于排序的问题仍然有效。
-
@Sean87 然后排序,然后返回;
List<T>.Sort方法是就地操作,因此没有返回值。即list.Sort(...); return list;
标签: c# linq list ienumerable