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)
似乎没有什么工作.
提前致谢!
问题是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)