[英]Linq to SQL group and count top 25
我的數據庫中有兩個表,它們看起來像這樣:
用戶:
userid(int)
username(varchar)
得分:
scoreid(int)
result(bit)
attackinguserid(int) (same as User.userid)
它們還包含其他信息,但這並不重要。 我想要得到的是得分= true的前25位用戶,並按以下方式顯示他們:
Username: Won:
Peter 28
Mike 25
Kim 20
依此類推...我一直在嘗試的代碼是這樣的:
var winners = (from s in dc.Scores
from u in dc.Users
where (s.result) && (s.attackinguserid == u.userid)
group u by s
into groups
select new
{
Username= groups.Key,
Won= groups.Count()
}
).OrderByDescending(x => x.Seire).Distinct().Take(25);
gvBestPlayers.DataSource = winners; //gvBestPlayers = gridview
gvBestPlayers.DataBind();
但這給我在DataBind()上的錯誤。 錯誤:用戶代碼未處理NotSupportedException。 成員'System.Web.UI.Page.Title'不支持SQL轉換。
解決了我的自我。 這是工作代碼:
var winners = (from s in dc.Scores
from u in dc.Users
where (s.result) && (s.attackinguserid == u.userid)
group s by u
into groups
select new
{
Username= groups.Key.username,
Won= groups.Count()
}).OrderByDescending(x => x.Seire).Distinct().Take(25).ToList();
gvBestPlayers.DataSource = winners;
gvBestPlayers.DataBind();
嘗試這個..
var a = (from s in dc.Scores
join u in dc.Users on s.attackinguserid equals u.userid
let count = dc.Scores.Where(id => id.attackinguserid == u.userid ).Count()
where s.result == true
select new { Username = u.username, Won = count }).ToList().Distinct();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.