【发布时间】:2018-08-28 18:46:38
【问题描述】:
我想显示 QualificationBatch 中所有 CompendiumId 实例的 Sum.Slots 以及 SAP 中所有 CompendiumId 实例的 Sum.Slots,并将其显示在如下表格中:
纲要 |Sum.Seats |Sum.Slots
Id1 |Seats1 |Slots1
Id2 |Seats2 |Slots2
经过大量阅读,我认为使用 GroupBy 可以做到这一点,但我无法让它工作,因为我对所有东西都很陌生,即使是操作 List 或 IEnumerable 等基础知识。这是我目前所拥有的:
模型
public class Compendium
{
public int Id { get; set; }
public string Name { get; set; }
public virtual ICollection<QualificationBatch> QualificationBatches { get; set; }
public virtual ICollection<SAP> SAPs { get; set; }
}
public class QualificationBatch
{
public int Id { get; set; }
public int CompendiumId { get; set; }
public int Slots { get; set; }
public virtual Compendium Compendium { get; set; }
}
public class SAP
{
public int Id { get; set; }
public int CompendiumId { get; set; }
public int Seats { get; set; }
public virtual Compendium Compendium { get; set; }
}
视图模型
public class SAPSummaryViewModel
{
public int Id { get; set; } //Compendium
public int Slots { get; set; } //QualificationBatch
public int Seats { get; set; } //SAP
}
控制器
public ActionResult Index()
{
List<SAPSummaryViewModel> SAPSummaryViewModelList = new List<SAPSummaryViewModel>();
var sapsummarylist = (from SP in db.SAPs
join Comp in db.Compendia on SP.CompendiumId equals Comp.Id
select new {Comp.Id, SP.Seats });
sapsummarylist.GroupBy(i => i.Id).Select(group =>
new
{
Id = group.Key,
Sum = group.Sum(item => item.Seats)
});
foreach (var item in sapsummarylist)
{
SAPSummaryViewModel objcvm = new SAPSummaryViewModel();
objcvm.Id = item.Id;
objcvm.Seats = item.Seats;
SAPSummaryViewModelList.Add(objcvm);
}
return View(SAPSummaryViewModelList);
}
我对其他方法持开放态度,我只是将我的控制器的代码放在上面以显示我一直在尝试的内容。在这里,我试图让它首先为一张桌子工作,但我已经卡在这里了,因为它不起作用。
【问题讨论】:
标签: asp.net-mvc linq group-by ienumerable