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