在这里需要一些Linq查询的帮助。
我正在尝试将一个列表放在一个自定义顺序中,我可以为我尝试排序的两个参数执行这些操作,但第三个参数似乎要难得多。
目前我所拥有的是:
return this.currentDocuments.OrderByDescending(x => x.Created).ThenBy(x => x.Description).toList();
现在我需要添加第三个参数,该参数由XML字段中的字符串设置。我有一个只是一串字母的字段,需要使用字符串的最后两个字母来定义顺序。
任何人都可以告诉我如何做到这一点?这是可以用Linq完成的事情,还是我需要编写一个单独的方法来执行此操作?
此外,还有9种不同的选项可用于字符串最后两位数的输出,因此我需要找到最简单的方法来处理所有选项。
如果这是一个巨大的n00b问题,任何建议/指示/帮助表示赞赏和道歉......但我们都需要以某种方式学习!
感谢。
答案 0 :(得分:0)
正如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的帖子更好的文档。祝你好运,如果我误解了什么,请随时再问。