2013-02-27 2 views
-2

Я хочу получить max parentID в таблице меню с linq. я использую этот код: ошибкаmax function in linq

var orderMenu = (from M in conn.Menus.ToList() 
            where M.ParentID == _type 
            select M.ParentID).Max(); 

но дисплей:

Sequence contains no elements 

(таблица может быть пустой)

+6

Что вы испытываете проблемы? Если запрос не возвращает никаких записей, что вы ожидаете от 'Max'? –

+0

попробуйте 'OrderByDescending' и выберите' firstordefault' –

+0

Что вы хотите достичь? Почему вы фильтруете «ParentID»? –

ответ

1

Если вы хотите вернуться сказать, максимальное, или ноль, если ничего не существует в коллекции, вы, вероятно, хотите использовать DefaultIfEmpty() в сочетании с Max()

var orderMenu = (from M in conn.Menus.ToList() 
           select M.ParentID).DefaultIfEmpty(0).Max(); 
+0

его ОК ..... :-) –

6

запрос является полностью избыточным.

Вы запрашиваете все элементы, где M.ParentID == _type, так что Max будет либо ничего (ошибка, как указано), либо _type, в зависимости от того, существует или нет такой элемент.