我是Linq的新手,并试图了解其错综复杂的内容。 我有一个具有唯一ID的普通类(不是从任何东西派生的),我想使用Linq对上面类的元素列表进行排序。
class item
{
public int itemID { get; set; }
public string Description { get; set; }
}
class items
{
List<item> myItems = new List<item>();
public List<item> test()
{
List<item> t = myItems.Sort((x,y) => (x.itemID.CompareTo(y.itemID))).ToList<item>();
return t;
}
}
我得到的错误是“操作员”。不能应用于'void'类型的操作数。 itemID是一个int,我应该能够将它与另一个int进行比较......我缺少什么?
答案 0 :(得分:2)
您使用的Sort()
方法不是LINQ扩展方法,它是一种本机List<T>
方法,可以对列表进行排序。因此没有返回值,这会导致您的问题。试试这样:
class item
{
public int itemID { get; set; }
public string Description { get; set; }
}
class items
{
List<item> myItems = new List<item>();
public List<item> test()
{
myItems.Sort((x, y) => (x.itemID.CompareTo(y.itemID)));
//return myItems.ToList<item>(); // unneeded transformation
return myItems;
}
}
答案 1 :(得分:2)
我认为你要找的是OrderBy
:
return myItems.OrderBy(x => x.itemID);
这些天很少需要明确排序列表。喜欢功能性编程风格。