繁体   English   中英

仅查询最高投票数

[英]Query Only the Highest Value of the Votes

//query the list of winners of the said event
    public ActionResult List_of_Winners(int id=0) {
        var winners = (from cat in db.Events_Category_tbl
            join can in db.Candidates_Info_tbl on cat.events_category_id equals can.events_category_id
            where cat.events_info_id == id
            select new Candidates
            {
                events_category_name = cat.events_category_name,
                candidates_fullname = can.candidates_fullname,
                candidates_info_id = can.candidates_info_id,
                events_category_id = cat.events_category_id,
                no_of_votes = can.no_of_votes.Value
            }).Take(1).OrderBy(x=>can.no_of_votes);

        return PartialView(winners);
    }

在此代码中,Iam计划在每个类别中获得最高的no_of_votes。 但是,我对此有一个错误。 如何查询数据库以获取所需的数据?

这是显示的错误:“名称”可以“在当前上下文中不存在”

您需要将订单移至有待取货/取货的地方,我相信这样的方法应该可以工作:

var winners = from cat in db.Events_Category_tbl
              from can in
                  (from c in db.Candidates_Info_tbl
                   where c.events_category_id == cat.events_category_id
                   select c).OrderByDescending(c => c.no_of_votes).Take(1)
              where cat.events_info_id == id
              select new Candidates
              {
                  events_category_name = cat.events_category_name,
                  candidates_fullname = can.candidates_fullname,
                  candidates_info_id = can.candidates_info_id,
                  events_category_id = cat.events_category_id,
                  no_of_votes = can.no_of_votes.Value
              };

对于类似的关系,可能会起作用(应该返回每个类别中得分最高的每个人):

var winners = from cat in db.Events_Category_tbl
              from max_votes in
                  (from c in db.Candidates_Info_tbl
                   where c.events_category_id == cat.events_category_id
                   select c.no_of_votes).OrderByDescending(c => c).Take(1)
              join can in db.Candidates_Info_tbl on cat.events_category_id equals can.events_category_id
              where cat.events_info_id == id && can.no_of_votes == max_votes
              select new Candidates
              {
                  events_category_name = cat.events_category_name,
                  candidates_fullname = can.candidates_fullname,
                  candidates_info_id = can.candidates_info_id,
                  events_category_id = cat.events_category_id,
                  no_of_votes = can.no_of_votes.Value
              };

我想也可以使用GroupBy或不同样式的内部查询来完成,但是“从x in(从z中的y,其中y.something = x.something选择某物)。Take(n)”模式导致交叉/外部适用于SQL Server,在我所见过的大多数情况下,它似乎表现良好。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM