LINQ中的字符串排序

问题描述 投票:0回答:2

我在数据库中有以下数据。

01-001-A-02
01-001-A-01
01-001-B-01
01-002-A-01
01-003-A-01

从上方,我想按以下方式对数据进行排序:

01-001-A-01
01-001-A-02
01-001-B-01
...

我的查询如下

var l = _context.Locs.OrderBy(o => o.loc).Take(3);

//result of the Query
01-001-A-01
01-002-A-01
01-003-A-01

这是我的表结构

public class Location
{
      [Key]
      public int id { get; set; }
      public string loc { get; set; }
      public bool isEmpty { get; set; }
}

我正在使用Asp.Net Core 2.2, Code-First方法。这不是计算出来的。

由'-'分割后,需要从右到左排序>>

LINQ查询中我缺少什么?

我在数据库中有以下数据。 01-001-A-02 01-001-A-01 01-001-B-01 01-002-A-01 01-003-A-01从上面开始,我想对数据进行如下排序:01-001-A -01 01-001-A-02 01-001-B-01 ...我的查询如下var l ...

c# linq asp.net-core-2.2
2个回答
0
投票

尚不清楚确切应该是什么排序,但是您应该知道可以使用ThenBy实现的几层排序,例如:


0
投票

您可以使用string[] data = new string[] {"01-001-A-02", "01-001-A-01", "01-001-B-01", "01-002-A-01", "01-003-A-01"}; var sorted = data.OrderBy(x => x).ThenBy(x=> x.Split('-')[3]); 方法按字符串的每个部分分别排序(由-分割:]

© www.soinside.com 2019 - 2024. All rights reserved.