linq group by with c#

本文关键字:with by group linq | 更新日期: 2023-09-27 18:25:48

我在Models类中创建了一个方法,通过以下代码从数据库中调用一组数据:

public IQueryable result(string username, string exam)
     {
        return (from result in idb.User_Exam_Question
                where (result.User_Tbl_email == username && result.Exam_Tbl_ID ==   Convert.ToInt32(exam))
                group result by result.category_tbl_ID into cat
                select cat);
    }

但我需要计算每个类别的行数。我应该如何更改上面的代码以获得我想要的输出。

非常感谢

linq group by with c#

如果要返回计数,只需添加.Count():

public int result(string username, string exam)
{
    return (from result in idb.User_Exam_Question
            where (result.User_Tbl_email == username && result.Exam_Tbl_ID == Convert.ToInt32(exam))
            group result by result.category_tbl_ID into cat
            select cat).Count();
}

或者,如果你想把每个子结果作为一个计数,你可以这样做:

public IQueryable result(string username, string exam)
{
    return from result in idb.User_Exam_Question
           where (result.User_Tbl_email == username && result.Exam_Tbl_ID == Convert.ToInt32(exam))
           group result by result.category_tbl_ID into cat
           select new
           {
               CatCount = cat.Count()
           } 
}

然后你可以做这样的事情:

result("username", "exam")[0].CatCount;
// returns the count of the first result of the query.

您可以直接从您的猫那里获得计数!

public IQueryable result(string username, string exam)
     {
        return (from result in idb.User_Exam_Question
                where (result.User_Tbl_email == username && result.Exam_Tbl_ID ==   Convert.ToInt32(exam))
                group result by result.category_tbl_ID into cat
                select new { Group = cat , Count = cat.Count()  } );
    }