我有这样的模型
public partial class TableNames
{
public string Name { get; set; }
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.None)]
public int IntId { get; set; }
}
然后在控制器中我试图从该模型获得最大IntId
var max = from c in db.TableNames
select c;
int? Max = max.AsQueryable().Max(x => x.IntId); //This isntruction throws an error
int IntId = ( Max == null ? 1 : Max + 1);
当表没有记录(它是空的)时,控制器会抛出此错误
The cast to value type 'Int32' failed because the materialized value is null.
Either the result type's generic parameter or the query must use a nullable type.
我该如何解决?
答案 0 :(得分:3)
请改为尝试:
int? Max = max.AsQueryable().Max(x => (int?)x.IntId);
答案 1 :(得分:3)
如果您不想处理Nullable并想要一个默认值(基于Splendor的代码),您可以执行类似以下的操作:
int Max = max.AsQueryable().Max(x => (int?)x.IntId) ?? 1;
答案 2 :(得分:0)
尝试:
max.Where(i => i.IntId.HasValue).Select(i => i.IntId.Value).Max()