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)
}
);
免责声明:
这完全是从记忆中完成的,没有测试

循环并将它们添加到列表中循环并将它们添加到列表中看似可行,但结果与循环相同-用户未分组。似乎在问题组之后,我也应该在集合组中?不。。。这是我的错。。。按作者分组-这是个坏主意。。。因为作者是阶级。更好的方法是按作者分组。名称看起来很有效,但结果与循环相同-用户未分组。似乎在问题组之后,我也应该在集合组中?不。。。这是我的错。。。按作者分组-这是个坏主意。。。因为作者是阶级。最好是按作者进行分组