比较LINQ中的两个计数

时间:2014-07-01 15:09:23

标签: 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 && fr.downloaded == "Y"
                      select fr.Recipient_ID).Count();
    }
}

或者在实体框架中使用tsql对我来说更简单吗?

1 个答案:

答案 0 :(得分:5)

这可以为您提供所需的结果

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