我们是否可以使用Linq根据其ID对类进行排序,而无需实现IEnumerable

时间:2013-12-02 15:43:30

标签: linq

我是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是一个i​​nt,我应该能够将它与另一个int进行比较......我缺少什么?

2 个答案:

答案 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);

这些天很少需要明确排序列表。喜欢功能性编程风格。