Сравнение двух показателей в LINQ

#c# #asp.net #.net #linq #entity-framework

#c# #asp.net #.net #linq #entity-framework

Вопрос:

у меня есть простой запрос, который сравнивает все отправленные запросы с теми, которые были загружены.

у меня есть tsql, который отлично работает следующим образом:

 select case when (select COUNT(*) from FileRecipient where File_ID = 3 and downloaded = 'Y') 
= (select COUNT(*) from FileRecipient where File_ID = 3) then 'Y' else 'N' end
  

но хотелось бы сделать это в LINQ.

любая помощь была бы оценена. я попробовал следующее, но, очевидно, я далек от того, чтобы сделать это правильно. это просто дает мне первый из двух показателей. нужно ли мне выполнять два отдельных оператора, чтобы получить второй?

 public static bool DownloadedByAll(int fsID)
{
    using (SEntities ctx = CommonS.GetSContext())
    {
        var result = (from fr in ctx.FileRecipients
                      where fr.File_ID == fsID amp;amp; fr.downloaded == "Y"
                      select fr.Recipient_ID).Count();
    }
}
  

или мне было бы проще использовать tsql в entity Framework для этого?

Ответ №1:

Это должно дать вам нужный результат

 var result = ctx.FileRecipients
                .Count(f=>f.File_ID == 3 
                       amp;amp; f.downloaded == 'Y') == ctxt.FileRecipients
                                                      .Count(f=>f.File_ID == 3);