基于LINQ中查找的计数

基于LINQ中查找的计数,linq,Linq,我有一个名为Cases的表(或实体)。还有另一个表CaseStatus_Lookup,该表的主键是Cases表中的外键 我想做的是:对于每一种状态类型,我都需要案例数量。例如,如果status=in progress,我想知道有多少案例处于该状态 还有一件事:我还想根据UserID过滤案例 我在林克尝试了几种方法,但都没有成功。我想知道是否有人能帮忙。试试Linq。GroupBy 我假设你的实体结构 假设您的案例实体如下 public class Case { public int Id{g

我有一个名为Cases的表(或实体)。还有另一个表CaseStatus_Lookup,该表的主键是Cases表中的外键

我想做的是:对于每一种状态类型,我都需要案例数量。例如,如果status=in progress,我想知道有多少案例处于该状态

还有一件事:我还想根据UserID过滤案例


我在林克尝试了几种方法,但都没有成功。我想知道是否有人能帮忙。

试试Linq
。GroupBy

我假设你的实体结构

假设您的
案例
实体如下

public class Case
{
  public int Id{get;set;}
  public int CaseStatusId{get;set;}
  public int UserId{get;set;}


  //navigational fields
  public virtual CaseStatus CaseStatus {get;set;}
}
假设您的
CaseStatus
实体如下:

public class CaseStatus
{
   public int Id{get;set;}
   public string Name{get;set;}

  //navigational fields..
  public virtual ICollection<Case> Cases{get;set;}

}
类似地,您可以根据userId进一步过滤结果


开始探索关于Linq的知识

您需要一个返回总和并将状态作为参数的函数:-如下所示

MyCaseStatusEnum caseStatus; //Pass your required status
int caseCount = myCases
                .Where(r => r.Status == caseStatus) 
                .GroupBy(p => p.Status)
                .Select(q => q.Count()).FirstOrDefault<int>();
MyCaseStatus枚举caseStatus//通过您所需的状态
int caseCount=myCases
.其中(r=>r.Status==caseStatus)
.GroupBy(p=>p.Status)
.Select(q=>q.Count()).FirstOrDefault();
MyCaseStatusEnum caseStatus; //Pass your required status
int caseCount = myCases
                .Where(r => r.Status == caseStatus) 
                .GroupBy(p => p.Status)
                .Select(q => q.Count()).FirstOrDefault<int>();