这可能是一个极小的关注问题:
myColl.OrderByDescending(item => item.myCollItemCreationDate)
.GroupBy(item => new { item.Id, item.ItemType, item.ChannelName })
.Select(res => new ChannelRowUi(res.ToList())
{
ChannelName = res.Key.ChannelName,
ItemType = res.Key.ItemType.ToString()
});
但后来我明白我错了,因为分组搞砸了这个命令。
我改为:
myColl.GroupBy(item => new { item.Id, item.ItemType, item.ChannelName })
.Select(res => new ChannelRowUi(res.ToList())
{
ChannelName = res.Key.ChannelName,
ItemType = res.Key.ItemType.ToString()
})
.OrderByDescending(item => item.myCollItemCreationDate);
但是我仍然可以通过创建日期得到最终结果。
知道我做错了吗?
答案 0 :(得分:2)
myColl
.GroupBy(item => new { item.Id, item.ItemType, item.ChannelName })
.OrderByDescending(item => item.CreationDate)
.ToList()
.Select(res =>
new ChannelRowUi(res.ToList())
{
ChannelName = res.Key.ChannelName,
ItemType = res.Key.ItemType.ToString()
})
答案 1 :(得分:1)
我认为你应该改变select和OrderBy的顺序。 记住它是一系列函数,下一个函数总是对链中前一个函数的结果进行操作。 当您拥有订单时,您将订购Select的结果。 在select中你正在构造新的ChannelRowUi对象,这些对象可能都得到了相同的CreationDate,但由于你没有显示ChannelRowUi构造函数,所以无法肯定地说。
答案 2 :(得分:0)
我认为你不会调用ToList命令
另外,请尽量避免使用ToList。
如果您有大数据 - 使用ToList是错误的。
你应该使用Deferred Ecxecution
首先你要完成orderby然后选择。