none
Как выбрать последний элемент в БД в Entity Framework RRS feed

  • Вопрос

  • Вопрос такой: как выбрать последнюю сущность из бд работая с  Entity Framework?

    Запрос типа: 

    private MayEntities db = new MayEntities();

    int name = db.Таблица.Last().Нужное поле

    не работает. Пишет, что: Выражению LINQ to Entities не удается распознать метод Last().

Ответы

Все ответы

  • Ответ нашел вот здесь: http://www.ginktage.com/2010/10/not-supported-in-linq-to-entities-and-entity-framework/

    LINQ to Entities не поддерживает метод Last()

    Но будет работать  так:

    int name = (from m in db.Таблица select m.Нужное_поле).ToList().Last();

    • Помечено в качестве ответа MakInnova 16 мая 2012 г. 17:14
  • Понятия "порядок и последний", очень относительные, а точнее их вообще нет в реаляционной базе. Его задаёте Вы, при выборке, используя ключи и индексы. Потому, такого метода и нет, а коллекция в памяти уже другое дело.
    Модератор
  • Ответ нашел вот здесь: http://www.ginktage.com/2010/10/not-supported-in-linq-to-entities-and-entity-framework/

    LINQ to Entities не поддерживает метод Last()

    Но будет работать  так:

    int name = (from m in db.Таблица select m.Нужное_поле).ToList().Last();

     Я бы предостерег пользоваться таким методом, т.к. вызов метода ToList() приведет к выборке всех записей из таблицы. Если записей много, то возникнут проблемы с производительностью. Лучше возпользоваться Count() и Skip(count-1).Take(1). Если первичный ключ является автоинкрементом, то можно отсортировать по нему в обратном порядке и взять одну запись.  db.Таблица.OrderByDescending(x => x.ПервичныйКлюч).FirstOrDefault()

    Иногда полезно читать коментарии в конце статьи ;)