簡體   English   中英

使用C#和LINQ排序

[英]Sorting using C# , LINQ

我在SharePoint中具有標題,日期和優先級的項目列表。 我想在顯示該集合時在我的客戶端應用程序上對其進行排序,首先需要按日期降序對這些集合進行排序,然后在一個日期對象集內對其進行排序。

我正在使用下面的LINQ代碼,該代碼未提供預期的結果。 表示以下代碼未按日期中的優先級對對象進行排序。

 var results = spObjects.OrderByDescending(n => n.Date).ThenBy(t => t.Priority);

未分類的收藏如下

在此處輸入圖片說明

排序的集合-期望

在此處輸入圖片說明

我正在使用SharePoint CAML查詢,因為我從SP中獲取了這些對象,發現在CAML中很難做到這一點,但是我認為可以在C#端使用LINQ來做到這一點,不是嗎? 有人可以幫忙嗎?

如果我正確理解您的要求,則希望在日期標題下嵌套一個集合,您可以執行以下操作...

 var results = from so in spObjects
               orderby so.Date descending
               select new {
                    Date = so.Date,
                    Items = (from so2 in spObjects
                             where so2.Date == so.Date
                             orderby so2.Priority
                             select new {
                                  so2.Title,
                                  so2.Priority
                             })
                    };

我敢打賭, n.Date是一個DateTime對象,帶有小時,分鍾和秒。 您的Linq看起來不錯,因此您可能有不同的時間,導致當天晚些時候優先級較低的項目在當天早些時候的項目之前進行排序。

嘗試類似:

 var results = spObjects.OrderByDescending(n => new DateTime(n.Date.Year, n.Date.Month, n.Date.Day)).ThenBy(t => t.Priority);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM