我有一个类似于下面的类,我试图从中为特定区域获取最大值:
public partial class Ads
{
public int Id { get; set; }
public int RegionId { get; set; }
public int Charge { get; set; }
public Nullable<int> Group { get; set; }
}
记录:
Id RegionId Charge Group
1 100 100 1
现在,我正在尝试获取regionid = 100的最大值,但问题是我总是得到1个查询:
int group = context.Ads.Where(a => a.RegionId == 100).Max(t => (int?)t.Group)) ?? 0 + 1;
为什么以上给我 1仅而不是2 ?
您应该将??
包裹在括号中:
int group = (context.Ads.Where(a => a.RegionId == 100).Max(t => (int?)t.Group) ?? 0) + 1;
原因是??
的优先级很低,如果您不使用Paranses,则在代码末尾使用0 + 1
,将首先计算出来,它将等于:
int group = context.Ads.Where(a => a.RegionId == 100).Max(t => (int?)t.Group) ?? 1;
// as 0 + 1 equals to 1
问题是它总是0,您需要放入内部()
int group = (context.Ads.Where(a => a.RegionId == 100).Max(t => (int?)t.Group)) ?? 0) + 1;