0

我正在使用一个简单的视图,它是两个表的左外连接,以获取每个 FEE 所属的 CATEGORY 名称并将它们分组以进行显示。当我简单地运行视图并遍历项目时,它会重复项目,就像它没有使用相同的视图一样。

    @foreach (var category in Model.FeeScheduleRates())
{
    <tr><td colspan="2">@category.Category</td></tr>
    foreach (var item in Model.FeeScheduleRates())
    {                                  

    <tr> 
        <td>@item.Fee_Title - @item.Description</td>
        <td>@item.Amount</td>                                        
    </tr>
    }                                   
}

所以我将我的方法更改为第二组项目的while循环,但这会导致内存不足错误并且似乎不起作用。

@foreach (var category in Model.FeeScheduleRates())
{   
    <tr><td colspan="2">@category.Category</td></tr>
    var cid = category.Cat_ID;                             
    while (category.Cat_ID == cid)
    {
         <tr> 
            <td>@category.Fee_Title - @category.Description</td>
            <td>@category.Amount</td>                                        
        </tr>       
    }                            
}

所以问题是,如何遍历视图并将项目分组到它们的类别中,只显示一次类别>

我已经回到绘图板并使用它:

                             @foreach (var category in Model.FeeScheduleRates().Distinct())
                            {
                                <tr><td colspan="2">@category.Category</td></tr>
                                foreach (var item in Model.FeeScheduleRates().Where(i=>i.Cat_ID == category.Cat_ID))
                                {                               
                                    <tr> 
                                        <td>@item.Fee_Title - @item.Description</td>
                                        <td>@item.Amount</td>                                        
                                    </tr>
                                }                                   
                            }

经历了某种形式的成功,因为类别显示为行,然后是下面的项目。有趣的是,它仍然只是重复相同项目的次数与匹配该类别的记录一样多。我仍然很好奇为什么它没有正确地遍历项目并给我每个 Fee_Title 和 Description。例如:

`免费服务

银行到银行 (B2B) 转账 - 资金到 FCU 免费
银行到银行 (B2B) 转账 - 资金到 FCU 免费
银行到银行 (B2B) 转账 - 资金到 FCU 免费
银行到银行 (B2B)转账 - 资金到 FCU 免费
银行到银行 (B2B) 转账 - 资金到 FCU 免费
银行到银行 (B2B) 转账 - 资金到 FCU 免费银行到银行 (B2B) 转账 - 资金到 FCU免费
银行 -
到银行 (B2B) 转账 - 资金到 FCU 免费
银行到银行 (B2B) 转账 - 资金到 FCU 免费
银行到银行 (B2B) 转账 - 资金到 FCU 免费
银行到银行 (B2B) 转账 -资金到 FCU 免费
银行到银行 (B2B) 转账 - 资金到 FCU 免费
银行到银行 (B2B) 转账 - 资金到 FCU 免费
储蓄和货币市场账户
储蓄
自动转账- 2 美元 储蓄
自动转账 - 2 美元 储蓄自动转账 - 2 美元
储蓄自动转账 - 2 美元 储蓄
自动转账 - 2 美元 储蓄自动转账 - 2 美元
储蓄自动转账 - 2
美元

所以数据库中有 12 个项目在免费类别下,7 个项目在储蓄和货币市场账户下。它只是重复每个类别的第一个类别,次数与类别中的记录一样多。我明白了!!!

4

1 回答 1

1

while (category.Cat_ID == cid)循环中既没有也没有category.Cat_ID改变cid,所以循环永远不会结束。

编辑

查看您获得的结果,您正在遍历不同的类别并多次针对该类别显示第一项。

您需要遍历一个非不同的列表以获取所有信息,并在 if 中隐藏类别名称lastcategory = thiscategory

解决这个问题的一个好方法是写出你想看到的纯 html,然后逆向构造它。

于 2012-11-05T14:52:57.217 回答