0

我将我的模型传递给我的视图。在这个视图中,我正在显示一个表并尝试使用数据库中的信息列表填充它。

我正在使用 asp.net-mvc、实体框架、剃须刀、c# 和 LINQ

但是我需要它按某个列分组kpiID

这是表中的所有列。

kpiHistoryID
kpiID
startAmount
completedamount
endAmount
completeBy
comments

kpiID 链接回 KPI 表,我可以在其中获取 KPI 的实际名称。

我究竟如何对数据进行分组,可以在下面的@foreach行中完成吗?

 <tbody>
    @foreach (var item in @Model.IPACS_Department.IPACS_Functions.SelectMany(m => m.IPACS_Processes).SelectMany(m => m.IPACS_Procedures).SelectMany(m => m.IPACS_KPIS).SelectMany(m => m.IPACS_kpiHistory))
    {
        <tr class="gradeX">
            <td>
                @item.IPACS_KPIS.name
            </td>
            <td>
                @item.startAmount
            </td>
            <td>
                @item.completedAmount
            </td>
            <td>
                @item.endAmount
            </td>
        </tr>
    }
</tbody>
4

2 回答 2

1

这个:

@Model.IPACS_Department.IPACS_Functions.SelectMany(m => m.IPACS_Processes)
.SelectMany(m => m.IPACS_Procedures).SelectMany(m => m.IPACS_KPIS)
.SelectMany(m => m.IPACS_kpiHistory)

给出了非规范化 kpiHistories 的列表,是吗?如果你这样做,它不会给你你想要的答案吗

thatList.GroupBy(x => x.kpiID)
于 2013-06-15T22:36:16.177 回答
0

我能弄清楚如何做到这一点的唯一方法是使用 sum。根本无法让它与 group by 一起工作。

<tbody>
    @foreach (var item in @Model.IPACS_Department.IPACS_Functions.SelectMany(m => m.IPACS_Processes).SelectMany(m => m.IPACS_Procedures).SelectMany(m => m.IPACS_KPIS))
    {
        <tr class="gradeX">
            <td>
                @item.name
            </td>
            <td>
                @item.IPACS_kpiHistory.Select(m => m.startAmount).Sum()
            </td>
            <td>
                @item.IPACS_kpiHistory.Select(m => m.completedAmount).Sum()
            </td>
            <td>
                @item.IPACS_kpiHistory.Select(m => m.endAmount).Sum()
            </td>
        </tr>
    }
</tbody>
于 2013-06-15T22:49:06.917 回答