我有以下 linq 表达式来进行排序,但想知道如何更改它,以便它按名称排序,但如果它是“the”,则忽略第一个单词
CaseStudies.OrderBy(a => a.Name)
最佳答案
最简单的方法(如果总是小写 the
并且单词之间不超过一个空格):
CaseStudies.OrderBy(a => a.Name.StartsWith("the ") ? a.Name.Substring(4) : a.Name)
您可以创建具有良好描述性名称的方法,并在那里移动此逻辑以及空检查和忽略大小写比较:
private string RemoveDefiniteArticle(string s)
{
if (String.IsNullOrEmpty(s))
return s;
if (s.StartsWith("the ", StringComparison.CurrentCultureIgnoreCase))
return s.Substring(4).TrimStart();
return s;
}
并使用它
CaseStudies.OrderBy(a => RemoveDefiniteArticle(a.Name))
关于Linq OrderBy 但如果 "the"忽略第一个单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21825112/