如何使用LINQ对文本字符串和数字进行排序

我一直在使用以下排序:

var query = _cityRepository.GetAll(

.OrderBy(item => item.RowKey.Substring(0, 4))

.ThenBy(item => item.ShortTitle)

但是我有一个问题,因为我的ShortTitle看起来像这样:

Liverpool - 1

Liverpool - 2

...

Liverpool - 9

Liverpool - 10

Liverpool - 11

West Kirby - 1

West Kirby - 8

West Kirby - 12

当我使用LINQ对它进行排序时

Liverpool - 1

Liverpool - 11

Liverpool - 12

Liverpool - 2

West Kirby - 1

West Kirby - 12

West Kirby - 8

ShortTitle始终是一串单词,后跟一个连字符和一个数字。

有什么办法可以使我正确排序吗?

回答:

这是因为您将它们作为字符串排序" title="字符串排序">字符串排序,并且字符串11排在2之前。您需要解析,ShortTitleint在末尾给您(我假设)值,然后按该值排序。

您的LINQ查询可以更改为此,以使其正常工作:

var query = _cityRepository.GetAll(

.OrderBy(item => item.RowKey.Substring(0, 4))

.ThenBy(item => item.ShortTitle.Split('-').First())

.ThenBy(item => Convert.ToInt16(item.ShortTitle.Split().Last()));

以上是 如何使用LINQ对文本字符串和数字进行排序 的全部内容, 来源链接: utcz.com/qa/424112.html

回到顶部