[英]LINQ Queries with dynamic Order By - more than one field
我有一個以名稱,日期,類別為參數的集合。 我想根據動態變化的三個輸入順序對列表進行排序。 例如:在一種情況下,我必須分別對訂單日期,名稱,類別進行排序。 在另一種情況下,順序是名稱,日期和類別。因此我可以擁有所有排列和組合。 有人可以通過一種通用的方式來幫助我。
LINQ已經允許您通過在OrderBy之后添加Queryable.ThenBy , QueryableThenByDescending , Enumerable.ThenBy或Enumerable.ThenByDescending函數來使用多個字段進行排序。
順便說一句 ,如果您需要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.