2017-06-14 68 views
1

我有一个名为MeteredGenerationInformation的类,其中包含问题SettlementDate,GenerationUnitMeteredGeneration和LossAdjustedGenerationUnitMeteredGeneration的三个相关字段。这些记录有成千上万,我希望按结算日期进行分组,并在特定日期范围内返回两个值的总和。LINQ查询GroupBy以及如何在剃刀视图中显示

我现在有以下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); 

如何我在视图中显示,这样我有两个其他领域的结算日期和汇总值?我已经尝试了代码,并同时呈现视图我无法工作,如何在视图中显示此:

@model System.Data.Entity.Infrastructure.DbQuery<System.Linq.IGrouping<System.DateTime, Reconciliation.Models.MeteredGenerationInformation>> 

回答

1
var summedResult = db.MeteredGenerationInformations.Where(mg => mg.IntervalPeriodTimestamp >= intervalSearch.StartDate && mg.IntervalPeriodTimestamp <= intervalSearch.EndDate && mg.messageType598.SettlementRunIndicator == intervalSearch.SettlementRunIndicator) 
       .GroupBy(mg => mg.messageType598.SettlementDate) 
       .SelectMany(s => s.Select(sl => new 
       { 
        GroupedDate = sl.SettlementDate, 
        SumGenerationUnitMeteredGeneration = s.Sum(c => c.GenerationUnitMeteredGeneration), 
        SumLossAdjustedGenerationUnitMeteredGeneration = s.Sum(c => c.LossAdjustedGenerationUnitMeteredGeneration), 
       })); 

应该给你你在找什么。

0

为了解决这个我不得不通过模型如下:

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>[] 

当时我能够在视图中显示使用该代码:

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