簡體   English   中英

具有動態Order By的LINQ查詢-一個以上字段

[英]LINQ Queries with dynamic Order By - more than one field

我有一個以名稱,日期,類別為參數的集合。 我想根據動態變化的三個輸入順序對列表進行排序。 例如:在一種情況下,我必須分別對訂單日期,名稱,類別進行排序。 在另一種情況下,順序是名稱,日期和類別。因此我可以擁有所有排列和組合。 有人可以通過一種通用的方式來幫助我。

LINQ已經允許您通過在OrderBy之后添加Queryable.ThenByQueryableThenByDescendingEnumerable.ThenByEnumerable.ThenByDescending函數來使用多個字段進行排序。

在LINQ中檢查多個“排序依據”以查找類似的問題和討論。

順便說一句 ,如果您需要Enumerable不提供的罕見方法,則可以將Enumerable轉換為Queryable,只需在其上調用AsQueryable即可。

我還在這里找到了他可能喜歡的東西: http : //www.codeproject.com/Articles/27834/Generic-List-Sort-Function <-希望它會有所幫助,它可以根據任何輸入屬性進行排序。 該屬性是通過反射獲得的。

這是一個例子

// Just to get IOrderedEnumerable from the collection
// And set the default order
var orderedItems = context.Items.OrderBy(i => i.Name);

var orderByString = txtOrderBy.Text.ToLower();
switch(orderByString)
{
    case "category":
        orderedItems = orderedItems.OrderBy(i => i.Category);
        break;
    case "date":
        orderedItems = orderedItems.OrderBy(i => i.Date);
        break;
    default:
        break;
}

暫無
暫無

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

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