5

有人可以通过向我展示如何对 LINQ 表达式进行排序来提供帮助。

我有以下内容:

 .OrderByDescending(item => item.RowKey)
 .Select((t, index) => new City.Grid()
           {
               PartitionKey = t.PartitionKey,
               RowKey = t.RowKey,
               Row = index + 1,
               ShortTitle = t.ShortTitle,

           })

我想做的是对以下内容进行排序:

1) 前四个字符或字段 RowKey
2) ShortTitle

我不确定如何对几个字符进行排序,也不确定如何进行二次排序。

4

5 回答 5

8

对于前四个字符,将其包含在现有语句中,然后添加 ShortTitle

.OrderByDescending(item => item.RowKey.Substring(0,4))
.ThenBy(item => item.ShortTitle)
于 2012-06-13T08:42:33.487 回答
1

您可以使用 OrderByDescending(...).ThenBy()...

.OrderByDescending(item => item.RowKey.Substring(0, Math.Min(4, item.RowKey.Length)))
.ThenBy(item => item.ShortTitle)
.Select((t, index) => new City.Grid()
       {
           PartitionKey = t.PartitionKey,
           RowKey = t.RowKey,
           Row = index + 1,
           ShortTitle = t.ShortTitle,

       })

Hth 托比

于 2012-06-13T08:42:13.477 回答
1

您可以使用ThenByandThenByDescending添加第二个键进行排序。

于 2012-06-13T08:42:43.313 回答
1

您可以使用Enumerable.ThenBy 方法

.OrderByDescending(item => item.RowKey)
.ThenByDescending(item => item.ShortTitle)
 .Select((t, index) => new City.Grid()
           {
               PartitionKey = t.PartitionKey,
               RowKey = t.RowKey,
               Row = index + 1,
               ShortTitle = t.ShortTitle,

           })
于 2012-06-13T08:44:24.807 回答
1

对于第一个要求,按子字符串排序,您可以传递Substring到表达式树:

.OrderByDescending(item => item.RowKey.Substring(0, 4))

(但请注意超出范围的异常。)

对于二级排序,使用ThenBy()方法

.ThenBy(item => item.ShortTitle)

结合:

.OrderByDescending(item => item.RowKey.Substring(0, 4))
.ThenBy(item => item.ShortTitle)
.Select((t, index) => new City.Grid()
       {
           PartitionKey = t.PartitionKey,
           RowKey = t.RowKey,
           Row = index + 1,
           ShortTitle = t.ShortTitle,

       }) 
于 2012-06-13T08:45:52.447 回答