[英]sort list by custom filter of string.contains
這里需要一些Linq查詢的幫助。
我正在嘗試以自定義順序整理一個列表,我可以對要嘗試排序的兩個參數執行此操作,但是第三個參數似乎更難處理。
我目前所擁有的是:
return this.currentDocuments.OrderByDescending(x => x.Created).ThenBy(x => x.Description).toList();
現在,我需要添加第三個參數,該參數由XML字段中的字符串設置。 我有一個只是字母字符串的字段,需要使用字符串的最后兩個字母來定義順序。
有人能啟發我如何做到這一點嗎? 這是Linq可以完成的事情,還是我需要編寫一個單獨的方法來做到這一點?
另外,在字符串的后兩位數字中有9種不同的輸出選項,因此我需要找到使用所有選項的最簡單方法。
任何建議/指針/幫助表示贊賞和歉意,如果這是一個很大的n00b問題。.但是我們都需要學習某種方式!
謝謝。
正如Jens Kloster所建議的那樣,您應該針對此問題查看Dynamic Linq。
查看這篇文章,獲取示例和代碼。 一個限制是您必須使用IQueryable<T>
而不是IEnumerable<T>
但這可能不是問題。
您的代碼將如下所示:
var sortingCodeToSortField = new Dictionary<string,string>
{ {"ei", "EmployeeId"}, {"na", "Name"}, {"ag", "Age" } };
string sortCode = GetSortCodeFromXml(inputXml);
string fieldToSortOn = sortingCodeToSortField[sortCode];
var whatYouHaveSoFar = this.currentDocuments.OrderByDescending(x => x.Created).ThenBy(x => x.Description);
var whatYouWant = whatYouHaveSoFar.AsQueryable.OrderBy(fieldToSortOn);
return whatYouWant.ToList();
動態Linq庫可能有點愚蠢; 請務必查看下載隨附的html頁面,因為它比Scott Gu的帖子具有更好的文檔。 祝您好運,請隨時詢問我是否誤解了。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.