C# 列表中列表的分组依据
我有问题列表:C# 列表中列表的分组依据,c#,linq,list,group-by,C#,Linq,List,Group By,我有问题列表:list其中Issue是类: public class Issue : BaseEntity { private string m_KeyString; [JsonProperty("expand")] public string Expand { get; set; } [JsonProperty("id")] public int Id { get; set; } #region Special key solution
list
其中Issue
是类:
public class Issue : BaseEntity
{
private string m_KeyString;
[JsonProperty("expand")]
public string Expand { get; set; }
[JsonProperty("id")]
public int Id { get; set; }
#region Special key solution
[JsonProperty("key")]
public string ProxyKey
{
get
{
return Key.ToString();
}
set
{
m_KeyString = value;
}
}
[JsonIgnore]
public IssueKey Key
{
get
{
return IssueKey.Parse(m_KeyString);
}
}
#endregion Special key solution
[JsonProperty("fields")]
public Fields Fields { get; set; }
}
类字段
如下所示:
public class Fields
{
[JsonProperty("summary")]
public string Summary { get; set; }
[JsonProperty("assignee")]
public Assignee Assignee { get; set; }
[JsonProperty("worklog")]
public List<WorkLog> WorkLogs { get; set; }
}
我想获得输出Author-SUM(TimeSpentSeconds)
因此,我需要按作者
分组,然后得到总和
对于问题
列表中的每个项目,我提出以下建议:
var sumTime = issue.Fields.WorkLogs.GroupBy(x => x.Author).Select(x => new
{
User = x.Key.Name,
Amount = x.Sum(s => s.TimeSpentSeconds)
});
按用户和计数总和进行分组
但是,我如何不仅为列表中的一个项目,而且为所有列表管理相同的内容呢?好的,我想你是说你可以为一个
问题运行这个查询,但是你希望能够在列表中的所有项目上运行它
我假设您不想通过问题
将其分开,所以我要做的是:
List<Issue> issues = // get Issues from wherever
var sumTime = issues.SelectMany(issue => issue.Fields.WorkLogs)
.GroupBy(x => x.Author)
.Select( x => new
{
x.Key.Name,
Amount = x.Sum(s => s.TimeSpentSeconds)
}
);
列出问题=//从任何地方获取问题
var sumTime=issues.SelectMany(issue=>issue.Fields.WorkLogs)
.GroupBy(x=>x.Author)
.选择(x=>new
{
x、 键。名称,
金额=x.Sum(s=>s.TimeSpentSeconds)
}
);
免责声明:
这完全是从记忆中完成的,没有测试 好的,我想你是说你可以为一个问题运行这个查询,但是你希望能够在列表中的所有项目上运行它
我假设您不想通过问题
将其分开,所以我要做的是:
List<Issue> issues = // get Issues from wherever
var sumTime = issues.SelectMany(issue => issue.Fields.WorkLogs)
.GroupBy(x => x.Author)
.Select( x => new
{
x.Key.Name,
Amount = x.Sum(s => s.TimeSpentSeconds)
}
);
列出问题=//从任何地方获取问题
var sumTime=issues.SelectMany(issue=>issue.Fields.WorkLogs)
.GroupBy(x=>x.Author)
.选择(x=>new
{
x、 键。名称,
金额=x.Sum(s=>s.TimeSpentSeconds)
}
);
免责声明:
这完全是从记忆中完成的,没有测试 循环并将它们添加到列表中循环并将它们添加到列表中看似可行,但结果与循环相同-用户未分组。似乎在问题组之后,我也应该在集合组中?不。。。这是我的错。。。按作者分组-这是个坏主意。。。因为作者是阶级。更好的方法是按作者分组。名称看起来很有效,但结果与循环相同-用户未分组。似乎在问题组之后,我也应该在集合组中?不。。。这是我的错。。。按作者分组-这是个坏主意。。。因为作者是阶级。最好是按作者进行分组