C#List <T> OrderBy始终返回null

Alt*_*ous 1 c# generic-list sql-order-by

这是我的设置.

public class ItemList : List<Item>
{
  public void Load() {...}
  public void Save() {...}
}
Run Code Online (Sandbox Code Playgroud)

从XML文件加载读取以填充ItemList

然后,我尝试按优先级排序项目列表.这是一个int?然而,出于测试目的,所有项目具有不同的值.

ItemList itemList = new ItemList();
itemList.Load();

ItemList newItemList = itemList
                        .OrderBy(item => item.Priority) as ItemList;

return newItemList;
Run Code Online (Sandbox Code Playgroud)

在上面的newItemList总是为null.itemList的Count为7.我进行了三次检查,并且itemList实例中的所有项都设置了优先级.

我究竟做错了什么?

我也试过......

ItemList newItemList = itemList
                        .OrderBy(item => item.Priority)
                        .ToList() as ItemList;
Run Code Online (Sandbox Code Playgroud)

似乎没有什么工作.

提前致谢!

Jos*_*eph 7

问题是OrderBy不返回ItemList,它返回IOrderedEnumerable,而ToList()不返回ItemList,它返回List.无论哪种方式,你都试图将它们都转换为ItemList,它们不是,所以你得到null.

ItemList someList = (new ItemList {new Item(2), new Item(1), new Item(3)});

//this returns an IOrderedEnumerable<Item>
var result = someList.OrderBy(i => i.Priority); 

//this returns a List<Item>
var otherResult = someList.ToList(); 
Run Code Online (Sandbox Code Playgroud)