猿问

如何检索列表变量的值(按

我正在尝试按项目ID分组,以便我可以返回总和,但是当我尝试使用First()返回字段的值时,它只返回一个值。


ASP.net c#项目尝试返回字段的总和时,我使用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


它(按项目类型)正确分组项目分钟,但它仅显示2个项目类型中的一种。我希望D.ProjectType在第一个是HR,在第二个是JR。我明白这是因为我正在使用First()。


慕沐林林
浏览 104回答 1
1回答

FFIVE

我希望我正确地理解了您的要求。你几乎按照你的想法来按Pid和ProjectType进行分组。var&nbsp;projectBydrivetimeList&nbsp;=&nbsp;ProjectbyDrivetime &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.GroupBy(v&nbsp;=>&nbsp;new&nbsp;{v.Pid,v.JobEventType})&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.Select(g&nbsp;=>&nbsp;new &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Pid&nbsp;=&nbsp;g.Key.Pid, &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ProjectMinutes&nbsp;=&nbsp;g.Sum(x&nbsp;=>&nbsp;x.JobMinutes), &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ProjectType=g.Select(x=>&nbsp;x.JobEventType).First() &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}).ToList();示例输出更新根据您的评论,另一个示例输入输出
随时随地看视频慕课网APP
我要回答