如何使用LINQ对文本字符串和数字进行排序
我一直在使用以下排序:
var query = _cityRepository.GetAll( .OrderBy(item => item.RowKey.Substring(0, 4))
.ThenBy(item => item.ShortTitle)
但是我有一个问题,因为我的ShortTitle看起来像这样:
Liverpool - 1Liverpool - 2
...
Liverpool - 9
Liverpool - 10
Liverpool - 11
West Kirby - 1
West Kirby - 8
West Kirby - 12
当我使用LINQ对它进行排序时
Liverpool - 1Liverpool - 11
Liverpool - 12
Liverpool - 2
West Kirby - 1
West Kirby - 12
West Kirby - 8
ShortTitle始终是一串单词,后跟一个连字符和一个数字。
有什么办法可以使我正确排序吗?
回答:
这是因为您将它们作为字符串排序" title="字符串排序">字符串排序,并且字符串11排在2之前。您需要解析,ShortTitle
以int
在末尾给您(我假设)值,然后按该值排序。
您的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