我有这个代码:
var query = _cityRepository.GetAll(
u => u.PartitionKey == pk &
u.RowKey.CompareTo(lowerBound) >= 0 &
u.RowKey.CompareTo(upperBound) < 0)
.OrderBy(item => item.RowKey.Substring(0, 3))
.ThenBy(item => item.ShortTitle)
.Select((t, index) => new City.Grid()
{
PartitionKey = t.PartitionKey,
RowKey = t.RowKey,
Row = index + 1,
ShortTitle = t.ShortTitle,
Created = t.Created,
CreatedBy = t.CreatedBy,
Modified = t.Modified,
ModifiedBy = t.ModifiedBy
})
.ToList();
当我查看输出的数据时,我发现前两行是这样的:
RowKey = 0101004O , ShortTitle = "Access 1"
RowKey = 0103004M , ShortTitle = "Access 2"
RowKey = 0101004K , ShortTitle = "xxx"
在测试时,我将其简化为:
var query1 = _cityRepository.GetAll()
.OrderBy(item => item.RowKey.Substring(0, 3))
.ThenBy(item => item.ShortTitle);
并且顺序是一样的。RowKey 的顺序似乎仍然不正确。
它应该对 rowkey 的前四个字符进行排序,然后对 ShortTitle 进行排序。
谁能明白为什么这不起作用。我仔细看了看,但我不明白为什么 OrderBy 和 ThenBy 似乎无法正常工作。