如何连接两个 IEnumerables 并将它们投影到一个分组中

How to concatenate two IEnumerable's and project them into a grouping

我有两个 IEnumerable<StatusGroup> 其中 StatusGroup 喜欢

public class StatusGroup
    {
        public DateTime ExamDate{ get; set; }
        public int SuccessCount{ get; set; }
        public int FailCount{ get; set; }
    } 

我想合并两个 IEnumerable,因此结果将只有每个日期的一条记录,并且应该计算计数器属性的总和

例如

List1={Date= 01/01/2016 , Success=10, Fail=0}
List2={Date= 01/01/2016 , Success=0, Fail=3}

结果应该是

List2={Date= 01/01/2016 , Success=10, Fail=3}

您可以 Concat/Union,然后按日期分组。代码大致如下所示:

var list3 = List1.Concat(List2)
                             .GroupBy(x => x.Date)  
                             .Select(grouping => 
                                 new StatusGroup
                                 {
                                     Date = grouping.Key, 
                                     SuccessCount = grouping.Sum(x => x.SuccessCount), 
                                     FailCount = grouping.Sum(x => x.FailCount)
                                 });