IList<int> values = new List<int> { 1, 2, 3, 4, 5 };
IList<int> emptyValues = new List<int> { };
int max = values.DefaultIfEmpty(Int32.MinValue)
.Max();
// do not throw exception
int maxEmpty = emptyValues.DefaultIfEmpty(Int32.MinValue)
.Max();
// max == 5
// maxEmpty == Int32.MinValue
РЕДАКТИРОВАТЬ:
Мой ответ может помочь вам избавиться от исключения в случае пустой таблицы, но не следующего значения автоматического увеличения.Вы можете следовать за ответом Джо и обернуть функцию IDENT_CURRENT
в новую хранимую процедуру GetIdentity
, затем вызвать ее с помощью LINQ
var nextIdent = (from a in db.GetIdentity("TableName")) + 1;