C# 我的LINQ排序似乎不像我要求的那样排序
我有以下代码:C# 我的LINQ排序似乎不像我要求的那样排序,c#,C#,我有以下代码: var query = _cityRepository.GetAll( u => u.PartitionKey == pk & u.RowKey.CompareTo(lowerBound) >= 0 & u.RowKey.CompareTo(upperBound) <
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();
测试时,我将其简化为:
var query1 = _cityRepository.GetAll()
.OrderBy(item => item.RowKey.Substring(0, 3))
.ThenBy(item => item.ShortTitle);
顺序是一样的。但行键的顺序似乎不正确
它应该根据rowkey的前四个字符进行排序,然后根据ShortTitle进行排序
有人知道为什么这不起作用吗。我仔细查看了一下,但不明白为什么OrderBy和ThenBy似乎不能正常工作。您是按
行键的前3个字符排序,而不是4个字符。要使用4个字符,请执行以下操作:
.OrderBy(item => item.RowKey.Substring(0, 4))
您是按行键的前3个字符排序,而不是按4个字符排序。要使用4个字符,请执行以下操作:
.OrderBy(item => item.RowKey.Substring(0, 4))
Substring
的第二个参数是length
,而不是index,我相信您的代码正试图这样做。当前状态下的代码基于前三个字符进行排序。更改:
.OrderBy(item => item.RowKey.Substring(0, 3))
到
Substring
的第二个参数是length
,而不是index,我相信您的代码正试图这样做。当前状态下的代码基于前三个字符进行排序。更改:
.OrderBy(item => item.RowKey.Substring(0, 3))
到
如果希望获得4个字符,请将子字符串更改为子字符串(0,4)。第二个参数指定长度,而不是索引。如果要获得4个字符,请将子字符串更改为子字符串(0,4)。第二个参数指定长度而不是索引D'oh!我正要发布一些关于Substring()
捕获闭包的愚蠢内容!谢谢我用谷歌搜索了一下,发现子字符串有些不同。我可能无意中查找了java:-(我会将您的答案标记为正确。哦!我正要发布一些关于Substring()
捕获闭包的愚蠢内容!谢谢。我在google上查找了一下,发现了一些与Substring不同的内容。我可能无意中查找了java:-(我将标记您的答案正确。错误可能在这里:item.RowKey.Substring(0,3)。我认为它应该是item.RowKey.Substring(0,4)。错误可能在这里:item.RowKey.Substring(0,3)。我认为它应该是item.RowKey.Substring(0,4)