有人可以通过向我展示如何对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
我不确定如何对几个字符进行排序,也不确定如何进行二次排序。
答案 0 :(得分:8)
对于前四个字符,请在现有语句中包含该字符,然后再添加ShortTitle
.OrderByDescending(item => item.RowKey.Substring(0,4))
.ThenBy(item => item.ShortTitle)
答案 1 :(得分: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,
})
H个 托比
答案 2 :(得分:1)
您可以使用ThenBy
和ThenByDescending
添加第二个键进行排序。
答案 3 :(得分:1)
.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,
})
答案 4 :(得分:1)
对于第一个要求,按子字符串排序,您可以将Substring
传递到表达式树中:
.OrderByDescending(item => item.RowKey.Substring(0, 4))
(但要注意超出范围的例外情况。)
对于辅助排序,请使用the ThenBy()
method:
.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,
})