当数据库 table 为空时,如何从数据库中获取最大 ID?

How to get Max Id from database when database table is empty?

我的数据库中有 table 调用 'GRNHDReturn'。当 table 为空时,我想从 table 获取最大 ReturnId。我该怎么做?

GRNHD返回数据库

public string getMax()
{
    GRNHDReturn grh = new GRNHDReturn();
    int max = 0;  
    if ((context.GRNHDReturns.Max(p => p.ReturnId) == 0))
    {
        max = 1;
        calculatemax = "RN" + max.ToString();
    }
    else
    {
        max = context.GRNHDReturns.Max(p => p.ReturnId);
        int nextmax = max + 1;
        calculatemax = "RN" + nextmax.ToString();
    }
    return calculatemax;
}
public string getMax()
{
   GRNHDReturn grh = new GRNHDReturn();
   int? max = (from o in context.GRNHDReturns
                  select (int?)o.ReturnId).Max();
   if (max == 0 || max == null)
   {
      max = 1;
      calculatemax = "RN" + max.ToString();
   }
   else
   {
      int? nextmax = max + 1;
      calculatemax = "RN" + nextmax.ToString();
   }
   return calculatemax;
}

你可以试试这个。

你可以通过这些代码行做任何你想做的事情:

int max = 0;  
max = context.GRNHDReturns.Select(p => p.ReturnId)
             .DefaultIfEmpty().Max();
int nextmax = max + 1;
calculatemax = "RN" + nextmax.ToString();
return calculatemax;

通过 DefaultIfEmpty(),如果没有记录,您告诉 EF return 0int 的默认值)。