[英]Getting multiple Distinct grouped values in linq
一直未能專門找到,回答我的問題..
我需要獲得一個顯示的結果:項目名稱ONCE,以及在給定日期范圍timeEntries
該項目上創建了timeEntries
所有用戶。
而且我還需要獲得timeEntries
( hoursEntered
),這樣我就可以計算出總共花了多少小時。
我是新手,所以我希望我提供了足夠的信息..
我的代碼:
var dateStart = new DateTime (2016,09,01);
var dateEnd = new DateTime (2016,09,19);
var query = (from timeEntry in TimeEntries
join task in Tasks on timeEntry.TaskID equals task.TaskID
join project in Projects on task.ProjectID equals project.ProjectID
where timeEntry.DateEntity >= dateStart && timeEntry.DateEntity <= dateEnd
select new {
User = timeEntry.User.FirstName + " "+timeEntry.User.LastName,
Project = timeEntry.Task.Project.ProjectName,
ProjectId = timeEntry.Task.ProjectID,
HoursEntered = timeEntry.HoursEntered
}).GroupBy (q => q.Project).Distinct();
我有4張桌子:
var query =
from timeEntry in TimeEntries
where timeEntry.DateEntity >= dateStart && timeEntry.DateEntity <= dateEnd
select new {
User = timeEntry.User.FirstName + " "+timeEntry.User.LastName,
Project = timeEntry.Task.Project.ProjectName,
ProjectId = timeEntry.Task.ProjectID,
HoursEntered = timeEntry.HoursEntered
}
var localRows = query.ToList();
var groups = localRows.GroupBy(x => x.Project);
var projects = groups.Select(g => new {
Project = g.Key,
Hours = g.Sum(x => x.HoursEntered),
Users = g.Select(x => x.User).Distinct().ToList()
}).ToList();
也許與:
var query = (from timeEntry in TimeEntries
join task in Tasks on timeEntry.TaskID equals task.TaskID
join project in Projects on task.ProjectID equals project.ProjectID
where timeEntry.DateEntity >= dateStart && timeEntry.DateEntity <= dateEnd
group timeEntry by new { proyect.ProjectID, proyect.ProjectName } into g
select new {
TimeEntries = g.ToArray(),
Project = g.Key.ProjectName ,
ProjectId = g.Key.ProjectID,
HoursEntered = g.Sum(e => e.HoursEntered)
});
我需要更多信息來調整它,但我認為這應該對你有幫助。 我是在瀏覽時做的,所以mybe你需要檢查名字。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.