【问题标题】:linq group by with c#linq group by 与 c#
【发布时间】:2012-02-24 20:54:12
【问题描述】:

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

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);
    }

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

非常感谢

【问题讨论】:

    标签: c# asp.net-mvc linq group-by


    【解决方案1】:

    如果要返回计数,只需添加.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.
    

    【讨论】:

    • 小子,你一定休息了一天。 IQueryable 没有索引器,该方法只返回计数,不知道是哪个类别。而且返回匿名类型通常是个坏主意。
    • 谢谢,我尝试从控制器调用它,但它不接受使用 [] 进行索引。
    • @GertArnold 是否有任何解决方案可以根据组计算行数?
    • 在您自己的代码中,在 quickview 中查看您的 cat 变量。都在那里。
    【解决方案2】:

    你可以直接从你的猫那里得到计数!

    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()  } );
        }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-11-03
      相关资源
      最近更新 更多