我正在尝试按日期时间字段排序,列表中包含以下对象:
// Order search results (posts to be displayed by created datetime).
if (implicitSelectedVisualiser.PostsSortOrder == PostsSortOrder.CREATED_DATE_ASC)
approvedSearchResults.OrderBy(s => s.PostCreatedTime);
else
approvedSearchResults.OrderByDescending(s => s.PostCreatedTime);
问题在于没有任何事情可以排序。
初始订单是:
2013-06-28 19:52:08.000
2013-06-28 19:38:30.000
2013-06-28 18:35:37.000
2013-06-29 17:07:22.000
2013-07-01 19:12:44.000
2013-07-01 19:15:29.000
2013-07-01 23:51:11.000
从上面排序后(它继续使用DESC),它仍然相同,而这在SQL中完美运行。
SELECT [PostCreatedTime]
FROM [SearchResults]
Where SearchQuery_Id = 10 or SearchQuery_Id = 7
Order by PostCreatedTime desc
2013-07-01 23:51:11.000
2013-07-01 19:15:29.000
2013-07-01 19:12:44.000
2013-06-29 17:07:22.000
2013-06-28 19:52:08.000
2013-06-28 19:38:30.000
2013-06-28 18:35:37.000
我在linq中犯了什么错误?
答案 0 :(得分:9)
我认为OrderBy
方法返回一个集合而不是针对给定集合进行排序。尝试将其更改为以下内容:
var orderedList = approvedSearchResults.OrderBy(s => s.PostCreatedTime);
答案 1 :(得分:1)
它不是内联排序 - 您需要将排序版本分配给变量
答案 2 :(得分:1)
尝试:
approvedSearchResults = approvedSearchResults.OrderBy(s => s.PostCreatedTime);
OrderBy返回有序集合,但不对集合进行排序。
答案 3 :(得分:0)
您需要将搜索结果存储在某个地方 - 目前
approvedSearchResults.OrderByDescending(s => s.PostCreatedTime);
不会存储在任何地方。