c# - 分组时如何检索列表变量的值
问题描述
我正在尝试按项目 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 人力资源 539
0186975-0001 人力资源 180
它正确地对 ProjectMinutes 进行分组(按项目类型),但它仅显示 2 种项目类型中的一种。我希望 D.ProjectType 第一个是 HR,第二个是 JR。我知道这是因为我使用的是 First()。
解决方案
我希望我正确理解了您的要求。您对 Group By Pid 和 ProjectType 的想法非常正确。
var projectBydrivetimeList = ProjectbyDrivetime
.GroupBy(v => new {v.Pid,v.JobEventType})
.Select(g => new
{
Pid = g.Key.Pid,
ProjectMinutes = g.Sum(x => x.JobMinutes),
ProjectType=g.Select(x=> x.JobEventType).First()
}).ToList();
样本输出
更新
根据您的评论,另一个示例输入
输出
推荐阅读
- wayland - 非 XDG Wayland 应用程序的示例?
- character - 如何选择出现在多个不连续行中的同一组字符,然后将这些标记的整个行复制到新的记事本中?
- swift - How can I be sure that I am accessing the correct value to use in Swift
- excel - 使用 ADO 和 ACE 提供程序为 INSERT 组合多个 UNION
- javascript - 创建将来自两个文件的数据与公共列相结合的地图 - 但数据不一对一匹配
- jdbc - 从雪花中的所有可用数据库中获取模式
- c# - 如何使用剃须刀组件在 asp.net 核心 Web 应用程序中管理文件(上传/删除)
- android - 如何通过遥控器关注在 Firestick 3rd Generation(Android API 28)上不可关注的 ListRow 项目
- sql - 在 SET 赋值中,您可以使用变量以编程方式定义应为 SET 的列名吗?
- java - 如何在android Studio的不同编辑文本中显示两个随机数组列表的结果?