Как выбрать только последнюю запись из таблицы sql с помощью сущности linq

#sql #entity-framework #linq-to-entities

Вопрос:

У меня есть таблица, в которой мы храним объявления, которые отображаются на экране во время собраний идентификатор собрания, теперь мой работодатель хочет, чтобы я добавил кнопку, которая отправляет объявления во все конференц-залы независимо от идентификатора комнаты, я сохраняю такие объявления в таблице с битовым значением true или false под именем IsAll, так что теперь я хочу знать, как выбрать только последнюю запись в таблице, для которой значение Isall равно true

 ID | roomid | announcement | IsAll  1 | 1 | example | ....  2 | 10 | test | true  

в этом случае я хочу получить объявление с идентификатором 2

 ID | roomid | announcement | IsAll  1 | 1 | example |false  2 | 10 | test | true  3 | 10 | test | false  

в этом случае я не хочу, чтобы SQL возвращал мне что-либо из таблицы, если это не так, как я пытался

 var msg = db.Broadcasts.Where(x =gt; x.IsAll == true).OrderByDescending(x =gt; x.Id).FirstOrDefault();  

но он всегда возвращает значение, которое не является оптимальным, как я могу этого достичь? Спасибо

Комментарии:

1. Что вы имеете в виду, говоря, что значение не является оптимальным?

2. Извините, я просто говорю, что во втором сценарии запрос не должен возвращать текст объявления, мне нужно вернуть только в том случае, если в конце есть запись с IsAll, для которой установлено значение true

3. Итак, вы хотите сказать, что хотите проверить последнюю запись и вернуть эту запись только в том случае, если значение IsAll верно?

4. да, вы правы

Ответ №1:

Поэтому все, что вам нужно сделать, это выбрать последний элемент и проверить, верно ли значение IsAll;

 public Broadcast GetLastGlobalMessage() {  var lastBroadcast = db.Broadcasts.OrderByDescending(x =gt; x.Id).FirstOrDefault();  if(lastBroadcast !=null amp;amp; lastBroadcast.IsAll)  return lastBroadcast;   return null; }  

Комментарии:

1. Большое вам спасибо за ваш ответ, вы сделали это намного проще для меня.