Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/329.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 我的LINQ排序似乎不像我要求的那样排序_C# - Fatal编程技术网

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)