Ồ, tôi chỉ thấy rằng lỗi do một phần mã khác gây ra. Trường hợp đã đóng.Sử dụng LINQ để chọn giá trị tối đa trong một nhóm
Tôi có 2 bảng
1- UserInfo
id uid name
1 11 Billy
2 22 Paul
3 33 Joshua
2- Điểm
id uid score
1 11 30
2 22 40
3 11 50
4 11 60
5 33 20
6 33 70
7 33 80
Tôi có một lớp được gọi là ScoreUser
public class ScoreUser{
public long uid{get; set;}
public string name{get;set;}
public int score{get;set;}
}
Tôi muốn sử dụng l inq để truy vấn hai bảng trên, nhận được số điểm tối đa của mỗi người dùng và ánh xạ nó vào đối tượng ScoreUser. Tôi sử dụng mã sau:
from s in Scores
join i in UserInfos
on s.uid equals i.uid
group uscore by new { s.uid, i.name} into g
let maxScore = g.Max(p => p.score)
select new ScoreUser
{
uid = g.Key.uid,
name = g.Key.name,
score = maxScore
}
Tuy nhiên, mã này không hoạt động. Nó tạo ra 7 đối tượng thay vì 3. Tôi nên làm gì?
những gì đang được trả lại? bạn đang nhận được một lỗi? – Theresa
Bạn không nên chuyển đổi các bảng Điểm và UserInfos? "từ i trong UserInfos tham gia s trong Điểm ..." Về cơ bản, ngay bây giờ lựa chọn chính của bạn là 7 hồ sơ dài. –