Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/288.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 仅查询投票的最高值_C# - Fatal编程技术网

C# 仅查询投票的最高值

C# 仅查询投票的最高值,c#,C#,在本准则中,Iam计划在每个类别中获得最高的否决票。但是,我有一个错误。如何查询数据库以获取所需的数据 这是显示的错误:“名称‘can’在当前上下文中不存在”您需要移动到有orderby/take的位置,我相信类似的操作应该可以: //query the list of winners of the said event public ActionResult List_of_Winners(int id=0) { var winners = (from cat in d

在本准则中,Iam计划在每个类别中获得最高的否决票。但是,我有一个错误。如何查询数据库以获取所需的数据


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

您需要移动到有orderby/take的位置,我相信类似的操作应该可以:

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

对于这样的关系,可能会有用(应该返回每个类别得分最高的所有人):


我想,这也可以通过GroupBy或不同风格的内部查询来实现,但“从x到z(从y到z,其中y.something=x.something select something)。Take(n)”模式会在SQL server中产生结果,在我看到的大多数情况下,SQL server的性能似乎都很好。

您到底得到了什么错误?您可以发布堆栈跟踪吗?没有检查整个查询,但至少您需要将
OrderBy(x=>Can.no\u投票)
更改为
OrderBy(x=>x.no\u投票)
。可能
。OrderBy(x=>Can.no\u投票)。接受(1)
?我已经将其更改为
OrderBy(x=>x.no\u投票)
但我只得到了一个冠军类别。我将如何查询获奖者的所有类别?那么
Take(1)
语句将返回结果的数量限制为1。因此,我假设这不是你想要的。候选人将显示的不是得票最多的候选人。那么,如果出现平局怎么办?我的意思是,超过1名候选人拥有最高的选票?我该怎么办?嗯,把每个类别的得票最多的人都带回来?是的。这会更好,因为在这个查询中,只有第一个得票最高的候选人才会显示,但在某些情况下,如果有多个候选人获得相同的最高得票或票数相等,则也应该显示。
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
              };