【问题标题】:LINQ orderby string with integer where 1,11,12,13 are not next to eachother? [duplicate]LINQ orderby 字符串,其中 1,11,12,13 不相邻? [复制]
【发布时间】:2013-11-19 08:31:37
【问题描述】:

我在表格中有以下列表

Name
Server1
Server2
Server3
Server4
Server5
Server6
Server7
Server8
Server9
Server10
Server11
Server12

唯一的问题是我的 linq satement orderby 名称升序将它们如下所示

Server1
Server10
Server11
Server12
Server2
Server3
Server4
Server5
Server6
Server7
Server8
Server9

有没有办法阻止这一切?

谢谢

【问题讨论】:

    标签: c# linq entity-framework


    【解决方案1】:

    对于这种特殊用例,您可以按长度排序,然后命名或解析数字并按其排序:

    // 1st alternative
    servers.OrderBy(s => s.Length).OrderBy(s => s.Name);
    
    // 2nd alternative
    servers.OrderBy(s => Int32.Parse(s.Substring(6)));
    

    【讨论】:

    • 嗯,不是在 linq 到实体。得先列举。 Linq to entity 不会欣赏 Int32.Parse。
    • +1 表示“第二个替代方案”,因为它是一个可行的解决方案。
    • linq 到实体是否支持商店表达式中的 .Substring?从哪个版本开始?
    • @RaphaëlAlthaus 你是对的,但该示例看起来结果集并不太大,并且无论如何都获取了所有数据。因此,我不介意第二次枚举,在这个特殊用例中
    猜你喜欢
    • 2014-10-30
    • 1970-01-01
    • 2012-02-23
    • 1970-01-01
    • 1970-01-01
    • 2017-12-05
    • 2012-05-26
    • 1970-01-01
    相关资源
    最近更新 更多