Tôi có một truy vấn trả về tổng số giờ được báo cáo cho tuần hiện tại. Mã dưới đây trả về tổng số giờ chính xác nhưng không trả về một người dùng cụ thể trong cơ sở dữ liệu.Truy vấn LINQ, làm sai lệch mệnh đề where trong phương thức
public int reportedWeekTime(int currentWeek, string username)
{
var totalTime = (from u in context.Users
from r in context.Reports
from w in context.Weeks
from d in context.Days
where u.Id == r.UserId && r.weekNr.Equals(currentWeek) && r.Id == w.ReportId && w.DayId == d.Id
select d.Hour).DefaultIfEmpty(0).Sum();
return totalTime;
}
Phương thức đầu tiên trả về số 24, đúng là chính xác nhưng như tôi đã nói, không phải cho người dùng cụ thể.
Tôi đang cố gắng làm điều này, nhưng nó mang lại cho tôi 0 lợi nhuận. Tôi đang làm gì sai?
public int reportedWeekTime(int currentWeek, string username)
{
var totalTime = (from u in context.Users
from r in context.Reports
from w in context.Weeks
from d in context.Days
where u.Id == r.UserId && r.weekNr.Equals(currentWeek) && r.Id == w.ReportId && w.DayId == d.Id && u.Username.Contains(username)
select d.Hour).DefaultIfEmpty(0).Sum();
return totalTime;
}
Có thể bạn nên đặt tên người dùng thành thuộc tính trong lớp học của bạn. Tôi biết WPQ Linq không phải là tốt với thông qua các giá trị của một phương pháp –
bạn cần phải sử dụng tham gia http://code.msdn.microsoft.com/LINQ-Join-Operators-dabef4e9 – Habib
Chuyển tên người dùng đến phương thức như thế này làm việc cho một truy vấn LINQ tôi sử dụng, nhưng không cho một cụ thể này. – rickard