我使用以下linq表达式进行排序,但想知道如何更改它,以便它将按名称排序,但是如果第一个单词是“ the”,则忽略
CaseStudies.OrderBy(a => a.Name)
最简单的方法(如果the
单词之间总是小写且空格之间不超过一个空格):
CaseStudies.OrderBy(a => a.Name.StartsWith("the ") ? a.Name.Substring(4) : a.Name)
您可以使用漂亮的描述性名称创建方法,并移动此逻辑以及null检查并忽略大小写比较:
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))
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句