Linqを試す.GroupBy
あなたのエンティティ構造を想定しています
あなたのCaseエンティティが
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;}
}
次に、これを行うことができます:
using (myDbContext db = new myDbContext())
{
   var query = db.Cases.GroupBy(case => case.CaseStatus.Name)
              .Select(group => 
                    new { 
                          Name = group.Key,
                          Cases= group.OrderBy(x => x.Id),
                          Count= group.Count()
                        }
                     ).ToList();
   //query will give you count of cases grouped by CaseStatus.
}
同様に、userId に基づいて結果をさらにフィルタリングできます。
Linq .GroupByについて調べ始める