簡體   English   中英

通過string.contains的自定義過濾器對列表進行排序

[英]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.

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