为什么orderBy不适用于此linq表达式

本文关键字:linq 表达式 适用于 orderBy 不适用 为什么 | 更新日期: 2023-09-27 18:20:46

我正在尝试按日期时间字段排序,该字段是一个包含以下对象的列表:

    // 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有错吗?

为什么orderBy不适用于此linq表达式

我认为OrderBy方法返回一个集合,而不是根据给定集合排序。尝试将其更改为以下内容:

var orderedList = approvedSearchResults.OrderBy(s => s.PostCreatedTime);

它不是内联排序-您需要将排序后的版本分配给变量

尝试:

approvedSearchResults = approvedSearchResults.OrderBy(s => s.PostCreatedTime);

OrderBy返回已排序的集合,但不针对该集合进行排序。

您需要将搜索结果存储在某个地方-目前

approvedSearchResults.OrderByDescending(s => s.PostCreatedTime);

不会存放在任何地方。