簡體   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