Linq OrderBy 但如果 "the"忽略第一个单词

标签 linq c#-4.0

我有以下 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/

相关文章:

wpf - KeyGesture 不只支持一键

c# - 比较没有时间的日期 Lambda

c#-4.0 - 以接口(interface)为基类的三元表达式

c# - 动态对象的 Lambda 表达式

mysql - 使用 LINQ 获取具有多对多关系的子表的所有记录

c# - 在 HashSet<string> 性能中搜索字符串

WCF 启动花费太多时间

c# - 领域与属性(property)。性能优化

c# - 仅使用 Linq 或 Lambda,如何组合这两段代码以返回 List<Entity> e?

c# - 为每个项目中的字段赋值的扩展方法?