Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/81.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/asp.net-mvc-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在MVC3中显示具有左外部联接的SQL视图_Sql_Asp.net Mvc 3 - Fatal编程技术网

在MVC3中显示具有左外部联接的SQL视图

在MVC3中显示具有左外部联接的SQL视图,sql,asp.net-mvc-3,Sql,Asp.net Mvc 3,我使用的是一个简单的视图,它是两个表上的一个左外部联接,用于获取每个费用所属的类别名称,并将它们分组以供显示。当我简单地运行视图并遍历项目时,它会重复这些项目,就像它不使用相同的视图一样 @foreach (var category in Model.FeeScheduleRates()) { <tr><td colspan="2">@category.Category</td></tr> foreach (var item

我使用的是一个简单的视图,它是两个表上的一个左外部联接,用于获取每个费用所属的类别名称,并将它们分组以供显示。当我简单地运行视图并遍历项目时,它会重复这些项目,就像它不使用相同的视图一样

    @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>
    }                                   
}
@foreach(Model.FeeScheduleRates()中的变量类别)
{
@类别,类别
foreach(Model.FeeScheduleRates()中的变量项)
{                                  
@item.Fee_Title-@item.Description
@项目.金额
}                                   
}
因此,我将第二组项目的方法改为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(Model.FeeScheduleRates()中的变量类别)
{   
@类别,类别
var cid=类别。类别ID;
while(category.Cat_ID==cid)
{
@category.Fee_Title-@category.Description
@类别.数额
}                            
}
所以问题是,如何迭代视图并将项目分组到它们的类别中,只显示一次类别>

我回到了绘图板,并使用了以下内容:

                             @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>
                                }                                   
                            }
@foreach(Model.FeeScheduleRates().Distinct()中的变量类别)
{
@类别,类别
foreach(Model.FeeScheduleRates()中的变量项,其中(i=>i.Cat_ID==category.Cat_ID))
{                               
@item.Fee_Title-@item.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美元`

因此,DB中有12个项目属于自由类别,7个项目属于储蓄和货币市场帐户。它只是重复每个类别中的第一个项目,重复次数与类别中的记录相同。我确实明白了!!!

while(category.Cat_ID==cid)中
不循环
类别。Cat_ID
cid
正在更改,因此循环永远不会结束

编辑

查看您得到的结果,您将遍历不同的类别,并多次显示该类别的第一项

如果
lastcategory=thiscegory
,则需要遍历一个非独特的列表来获取所有信息,并隐藏类别名称


解决这个问题的一个好方法是为你想看到的内容写出纯html,然后反向构建它。

为什么不将它们分组到eh SQLE中呢?也许这就是我应该关注的地方。当我尝试groupby
时,sql爆炸了。选择A.Cat\u ID,A.Fee\u Title作为Title,A.描述,A.金额,b.类别Fee_Schedule AS a LEFT OUTER JOIN Fee_Categories AS b ON a.Cat_ID=b.Cat_ID GROUP BY b.Category
所以也许我应该只对类别进行第二次查询?我想使用第一个Foreach循环对类别进行分组,但仅仅显示视图似乎比最初想象的要复杂。当然,在实体中使用连接框架也不是strightforward。您可以循环遍历按类别排序的所有数据,并拾取类别更改以显示类别标题,否则将单元格留空。这就是我对cid变量所做的。我甚至在while循环中重新分配了变量。我仍然不清楚为什么该项。类别不是iter当我们查看视图时,请仔细阅读。SQL视图:`SELECT a.Cat_ID,a.Fee_Title,a.Description,a.Amount,b.Category FROM dbo.Fee_Schedule as a.Cat_ID=b.Cat_ID ORDER BY a.Cat_ID`返回一个Cat_ID订单列表。请有人解释一下。