如何获取最大的SortOrder作为一个整数?

时间:2019-01-23 09:37:14

标签: c# linq

在创建新记录时,我要检查任何现有记录的当前最大值SortOrder,然后将1添加到新记录。这是我的查询:

role.SortOrder = await db.Roles
    .Where(b => b.Id == BranchId)
    .OrderByDescending(s => s.SortOrder)
    .Select(s => s.SortOrder)
    .FirstOrDefaultAsync() + 1;

我想在查询中执行的操作是对所有排序在SortOrder上的现有记录进行排序,然后选择应该具有最高值的顶部记录。

但是我所有的记录都得到了SortOrder 1。

我的错误在哪里?

2 个答案:

答案 0 :(得分:1)

我认为问题出在您的Where子句中。您正在将BranchIdId的{​​{1}}进行比较。可能找不到ID为Role的角色,因此您只能从BranchId中获得整数默认值0,该默认值将增加1。

如果您修复了FirstOrDefaultAsync(),因此它实际上返回了结果,则可能会起作用:

Where

答案 1 :(得分:0)

您需要使用Take

 role.SortOrder = await db.Roles
        .Where(b => b.Id == BranchId)
        .OrderByDescending(s => s.SortOrder)
        .Select(s => s.SortOrder)
        .Take(1)
        .FirstOrDefaultAsync() + 1;