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

試す:

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

OrderBy は順序付けられたコレクションを返しますが、コレクションに対して順序付けはしません。

于 2013-07-03T11:11:47.313 に答える
1

インラインソートではありません - ソートされたバージョンを変数に割り当てる必要があります

于 2013-07-03T11:10:15.387 に答える
0

現時点では、検索結果をどこかに保存する必要があります

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

どこにも保存されません。

于 2013-07-03T11:10:29.537 に答える