我需要将它展平为新系列中的一个项目.
输入将是IEnumerable集合.基类如下所示:
public class ConversionsResult
{
public int SiteId { get; set; }
public int TotalLeads { get; set; }
public int TotalCalls { get; set; }
public int TotalEmails { get; set; }
public int UniqueVisits { get; set; }
public int MetricYear { get; set; }
public int MetricMonth { get; set; }
public string DeviceCategory { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
扁平化的类看起来像这样:
SiteId, MetricMonth, MetricYear SUM(TotalLeads), SUM(TotalEmails), SUM(UniqueVisits), CONCATENATE(DeviceCategory).
Run Code Online (Sandbox Code Playgroud)
笔记:
我可以完成另一条路线,但我想使用LINQ.我试图破解我找到的一些解决方案,但这是一团糟,所以我排除了我试过的噪音.
Hab*_*bib 10
你需要通过组(Enumerable.GroupBy) SiteId,MetricMonth并且MetricYear然后选择类似的结果:
var query = list.GroupBy(r => new { r.SiteId, r.MetricMonth, r.MetricYear })
.Select(grp => new
{
SiteId = grp.Key.SiteId,
MetricMonth = grp.Key.MetricMonth,
MetricYear = grp.Key.MetricYear,
TotalLeads = grp.Sum(r=> r.TotalLeads),
TotalEmails = grp.Sum(r=> r.TotalEmails),
UniqueVisits = grp.Sum(r=> r.UniqueVisits),
DeviceCategory = String.Join(",", grp.Select(r=> r.DeviceCategory)),
});
Run Code Online (Sandbox Code Playgroud)