我一直在使用以下排序:
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始终是一串单词,后跟一个连字符和一个数字。
有什么办法可以使我正确排序吗?
这是因为您将它们作为字符串排序,并且字符串11排在2之前。您需要解析,ShortTitle以int在末尾给您(我假设)值,然后按该值排序。
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()));