2012-10-25 13 views
11

में मॉडल सामग्री के माध्यम से लूपिंग मैं अपने मॉडल में प्रत्येक मॉडल के माध्यम से अपने रेजर व्यू में लूप करना चाहता हूं लेकिन मैं सभी वस्तुओं को एक साथ समूहबद्ध करना चाहता हूं। मैं फिर प्रत्येक समूह के माध्यम से लूप करना चाहता हूँ। कल्पना कीजिए कि मैं एक मेज है:रेजर

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 

यह संभव है?

धन्यवाद

+0

क्या आपने वास्तव में अपने मॉडल डेटा संरचनाओं को देने की कोशिश की है जो आपके पहले (पहली नज़र में वैध) रेजर कोड की अपेक्षा करता है? – millimoose

+0

GroupNo निश्चित रूप से एक IENumerable सही नहीं है? मैं पूछ रहा हूं क्योंकि आप इस पर एक foreach कर रहे हैं –

उत्तर

25

हाँ, यह Linq GroupBy का उपयोग कर ऐसा करने के लिए आसान है।

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

फिर, बस समूह के माध्यम से पुनरावृति के रूप में आप ने लिखा है, group.Key बजाय group.GroupNo का उपयोग कर IGrouping की कुंजी को पुनः प्राप्त करने के लिए छोड़कर:: मैं आपके विचार बदल रहा है @model IEnumerable<IGrouping<string, MyModel>> है, जो आपको इस तरह पॉप्युलेट होता उपयोग करने के लिए सुझाव देंगे

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

पूरी तरह से काम करता है !! :) बहुत बहुत धन्यवाद – Rodders

+0

यह कमाल है, लेकिन आप इसे वापस नियंत्रक को कैसे पास करते हैं? –

7

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> 
} 
+0

इस तर्क ने मुझे बहुत समय बचाया .. धन्यवाद! – Victor

-2
@{ 
    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