#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. Большое вам спасибо за ваш ответ, вы сделали это намного проще для меня.