Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/312.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 比较LINQ中的两个计数_C#_Asp.net_.net_Linq_Entity Framework - Fatal编程技术网

C# 比较LINQ中的两个计数

C# 比较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 但我想在林克做这件事 任何和所有的帮助都将不胜感

我有一个简单的查询,它将所有发出的请求与已下载的请求进行比较

我有一个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
但我想在林克做这件事

任何和所有的帮助都将不胜感激。我尝试了以下方法,但显然我离正确的方法还有很长的路要走。这只是两个计数中的第一个。我需要做两个单独的语句才能得到第二个吗

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会更简单吗?

这会让您得到所需的结果

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

这会让你得到你需要的结果

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