按列表中的分组

演示

我有一些问题清单:List<Issue>在哪里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; }
}

Fields看起来像这样:

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; }
}

和类WorkLog

public class WorkLog : BaseEntity
{
    [JsonProperty("updateAuthor")]
    public string Author { get; set; }

    [JsonProperty("timeSpent")]
    public string TimeSpent { get; set; }

    [JsonProperty("timeSpentSeconds")]
    public int TimeSpentSeconds { get; set; }
}

我想得到输出 Author - SUM (TimeSpentSeconds)

所以我需要分组Author,然后得到SUM

对于Issues列表中的每个项目,我都这样做:

var sumTime = issue.Fields.WorkLogs.GroupBy(x => x.Author).Select(x => new
{
    User = x.Key.Name,
    Amount = x.Sum(s => s.TimeSpentSeconds)
});

按用户分组并计算总和。

但是,我不仅可以对列表中的一项进行管理,还可以对所有列表进行相同的管理吗?

安·L。

好的,我想您是说您可以对一个查询运行一次Issue,但是您希望能够对一个查询中的所有项目运行该查询List<Issue>

我假设您不想通过单独将其分开Issue,所以我要做的是:

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)
               }
               );

免责声明:

这完全是通过内存完成的,没有进行任何测试。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章