13

モデルの各アイテムをかみそりのビューでループしたいのですが、すべてのアイテムをグループ化したいのです。次に、各グループをループします。私がテーブルを持っていると想像してください:

ID   GroupNo    GroupName
1    1          Group1
2    1          Group2
3    1          Group3
4    2          Group1
5    2          Group2
6    3          Group56

私は次のようなことをしたい:

@foreach (var group in Model.GroupNo) {
    <section>
        <header>Group No is @group.GroupNo</header>
        @foreach (var item in group) {
            <p>GroupName: @item.GroupName</p>
        }
    </section>
} 

したがって、私の出力は次のとおりです。

Group No is 1
GroupName: Group1
GroupName: Group2
GroupName: Group3
Group No is 2
GroupName: Group1
GroupName: Group2
Group No is 3
GroupName: Group56

これは可能ですか?

ありがとう

4

3 に答える 3

33

はい、これはLinqを使用して簡単に行うことができGroupByます。使用するようにビューを変更することをお勧めします@model IEnumerable<IGrouping<string, MyModel>>。これは次のように入力します。

var groupModel = MyModelCollection.GroupBy(item => item.GroupNo).ToArray();
return View(groupModel);

次に、IGroupingのキーを取得するgroup.Key代わりにを使用することを除いて、作成したとおりにグループを反復処理します。group.GroupNo

@foreach (var group in Model) {
    <section>
        <header>Group No is @group.Key</header>
        @foreach (var item in group) {
            <p>GroupName: @item.GroupName</p>
        }
    </section>
} 
于 2012-10-25T23:11:09.583 に答える
10

LINQはそれを行うのに役立ちます

@model IEnumerable<Project1.Models.Group>


@foreach (var item in Model.Select(i=>i.groupno).Distinct().ToList()) {
    <tr>
        <td>
            <header>Group No is @item</header>
            @foreach (var grpName in Model.Where(i => i.groupno == item).ToList())
            {
                <p>GroupName: @grpName.groupName</p>
            }
        </td>
    </tr>
}
于 2012-10-25T23:39:28.470 に答える
-4
@{
    Layout = null;
}
<!DOCTYPE html>
<html>
<head>
    <meta name="viewport" content="width=device-width" />
    <title>Index</title>
</head>
<body>
    <div>

        @{
            String[] name = {"Prashant", "Rishabh", "Zaheer", "Pratima", "Rahul"};
            int i = 1;
            while (i <= 5)
            {
                foreach(var x in name)
                {
                       <p>@i.  @x</p>
                       i++;
                };
                break;
            }
        }
    </div>
</body>
</html>

O/p-
1. Prashant

2. Rishabh

3. Zaheer

4. Pratima

5. Rahul
于 2017-12-08T10:29:23.507 に答える