Я пытаюсь сгруппировать по идентификатору проекта, чтобы я мог вернуть сумму, однако, когда я пытаюсь вернуть значение поля, используя First (), он возвращает только одно значение.
ASP.net c # projectпытаясь вернуть сумму для поля, у меня есть код, возвращающий правильное число с помощью LINQ, однако я не могу вернуть соответствующее строковое поле.Я пробовал группировать по 2 полям, но это возвращает слишком много записей.
public class JobsByDrivetime
{
private string pid;
private double jobMinutes;
private string jobEventType;
public JobsByDrivetime(string pid, double jobMinutes,string jobEventType)
{
this.pid = pid;
this.jobMinutes = jobMinutes;
this.jobEventType = jobEventType;
}
public string Pid
{
get { return pid; }
set { pid = value; }
}
public double JobMinutes
{
get { return jobMinutes; }
set { jobMinutes = value; }
}
public string JobEventType
{
get { return jobEventType; }
set { jobEventType = value; }
}
}
List<JobsByDrivetime> ProjectbyDrivetime = new List<JobsByDrivetime>();
ProjectbyDrivetime.Add(new JobsByDrivetime("0186975-0001", 439, "HR"));
ProjectbyDrivetime.Add(new JobsByDrivetime("0186975-0001", 100, "HR"));
ProjectbyDrivetime.Add(new JobsByDrivetime("0186975-0001", 180, "JR"));
var projectBydrivetimeList = ProjectbyDrivetime
.GroupBy(v => v.Pid) //(c => new { Pid = c.Pid, ProjectType = c.JobEventType })
.Select(g => new
{
Pid = g.Key,
ProjectMinutes = g.Sum(x => x.JobMinutes),
ProjectType=g.Select(x=> x.JobEventType).First()
}).ToList();
foreach (var D in projectBydrivetimeList)
{
shiftSummary.Add("<tr><td>" + D.Pid + "</td><td>" + D.ProjectType + "</td><td>" + D.ProjectMinutes + "</td></tr>");
}
Вывод
0186975-0001 HR 539
0186975-0001 HR 180
Он правильно группирует ProjectMinutes (по типу проекта), но отображает только один из 2 типов проектов.Я ожидаю, что D.ProjectType будет HR на первом и JR на втором.Я понимаю, что это потому, что я использую First ().