2

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

    // 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 中犯了任何错误?

4

4 回答 4

9

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

var orderedList = approvedSearchResults.OrderBy(s => s.PostCreatedTime);
于 2013-07-03T11:09:55.617 回答
1

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

于 2013-07-03T11:10:15.387 回答
1

尝试:

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

OrderBy 返回一个有序集合,但不对集合排序。

于 2013-07-03T11:11:47.313 回答
0

您需要将搜索结果存储在某处 - 目前

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

不会存储在任何地方。

于 2013-07-03T11:10:29.537 回答