GroupBy的LINQ查询以及它在razor视图中的显示方式

GroupBy的LINQ查询以及它在razor视图中的显示方式,linq,razor,group-by,entity-framework-6,Linq,Razor,Group By,Entity Framework 6,我有一个名为MeteredGenerationInformation的类,它包含三个与问题解决日期、GenerationUnitMeteredGeneration和LossAdjustedGenerationUnitMeteredGeneration相关的字段。这些记录有数千条,我想按结算日期分组,并返回特定日期范围内记录的两个值的总和 我现在有以下LINQ查询: IQueryable<IGrouping<DateTime, MeteredGenerationInformation&

我有一个名为MeteredGenerationInformation的类,它包含三个与问题解决日期、GenerationUnitMeteredGeneration和LossAdjustedGenerationUnitMeteredGeneration相关的字段。这些记录有数千条,我想按结算日期分组,并返回特定日期范围内记录的两个值的总和

我现在有以下LINQ查询:

IQueryable<IGrouping<DateTime, MeteredGenerationInformation>> mgList = db.MeteredGenerationInformations.Where(mg => mg.IntervalPeriodTimestamp >= intervalSearch.StartDate && mg.IntervalPeriodTimestamp <= intervalSearch.EndDate && mg.messageType598.SettlementRunIndicator == intervalSearch.SettlementRunIndicator).GroupBy(mg => mg.messageType598.SettlementDate);
IQueryable mgList=db.meteredGenerationFormations.Where(mg=>mg.IntervalPeriodTimestamp>=intervalSearch.StartDate&&mg.IntervalPeriodTimestamp mg.messageType598.SettlementDate);
我如何在视图中显示此信息,以便获得结算日期和其他两个字段的合计值?我已经尝试了该代码,虽然它呈现视图,但我无法确定如何在视图上显示该代码:

@model System.Data.Entity.Infrastructure.DbQuery<System.Linq.IGrouping<System.DateTime, Reconciliation.Models.MeteredGenerationInformation>>
@model System.Data.Entity.Infrastructure.DbQuery
var summedResult=db.MeteredGenerationFormations.Where(mg=>mg.IntervalPeriodTimestamp>=intervalSearch.StartDate&&mg.IntervalPeriodTimestamp mg.messageType598.SettlementDate)
.SelectMany(s=>s.Select(sl=>new
{
GroupedDate=sl.SettlementDate,
SumGenerationUnitMeteredGeneration=s.Sum(c=>c.GenerationUnitMeteredGeneration),
SumLossAdjustedGenerationUnitMeteredGeneration=s.Sum(c=>c.LossAdjustedGenerationUnitMeteredGeneration),
}));

应该给你你想要的。

要解决这个问题,我必须通过以下模型:

var mgList = db.MeteredGenerationInformations.Where(mg => mg.messageType598.SettlementDate >= aggregationSearch.StartDate && mg.messageType598.SettlementDate <= aggregationSearch.EndDate && mg.messageType598.SettlementRunIndicator == aggregationSearch.SettlementRunIndicator).GroupBy(mg => mg.IntervalPeriodTimestamp).ToArray();
return View("MeteredGenerationInformations", mgList);
@model System.Linq.IGrouping<System.DateTime, Reconciliation.Models.MeteredGenerationInformation>[]
var mgList=db.meteredGenerationFormations.Where(mg=>mg.messageType598.SettlementDate>=aggregationSearch.StartDate&&mg.messageType598.SettlementDate mg.IntervalPeriodTimestamp).ToArray();
返回视图(“MeteredGenerationFormations”,mgList);
然后,我在视图中引用了模型,如下所示:

var mgList = db.MeteredGenerationInformations.Where(mg => mg.messageType598.SettlementDate >= aggregationSearch.StartDate && mg.messageType598.SettlementDate <= aggregationSearch.EndDate && mg.messageType598.SettlementRunIndicator == aggregationSearch.SettlementRunIndicator).GroupBy(mg => mg.IntervalPeriodTimestamp).ToArray();
return View("MeteredGenerationInformations", mgList);
@model System.Linq.IGrouping<System.DateTime, Reconciliation.Models.MeteredGenerationInformation>[]
@model System.Linq.IGrouping[]
然后,我可以使用以下代码在视图中显示:

@foreach (var group in Model)
    {
        <tr>
            <td>@group.Key</td>
            <td>@group.Sum(i => i.GenerationUnitMeteredGeneration)</td>
            <td>@group.Sum(i => i.LossAdjustedGenerationUnitMeteredGeneration)</td>
        </tr>
    }
@foreach(模型中的变量组)
{
@组键
@group.Sum(i=>i.GenerationUnitMeteredGeneration)
@group.Sum(i=>i.LossAdjustedGenerationUnitMeteredGeneration)
}