#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);