2009-07-21 6 views
17

क्रिस्टल रिपोर्ट्स जैसे रिपोर्टिंग टूल में, डेटा में किसी विशेष कॉलम द्वारा इसे डिमॉर्मलाइज्ड डेटा लेने और समूह को निर्दिष्ट करने के तरीके हैं, निर्दिष्ट कॉलम में प्रत्येक अद्वितीय आइटम के लिए पंक्ति शीर्षलेख बनाते हैं।मैं एएसपी.नेट एमवीसी व्यू में डेटा कैसे समूहबद्ध करूं?

अगर मैं इस:

Category1 Data1 
Category1 Data2 
Category1 Data3 
Category2 Data4 
Category2 Data5 
Category2 Data6 

रिपोर्टिंग सॉफ्टवेयर होगा इस तरह समूह यह:

Category1 
     Data1 
     Data2 
     Date3 
Category2 
     Data4 
     Data5 
     Data6 

वहाँ शायद एक का उपयोग कर एक ASP.NET MVC ध्यान में रखते हुए ऐसा करने के लिए, एक रास्ता है एक foreach या घोंसला foreach के साथ सरल linq वाक्यांश या linq विस्तार विधि?

उत्तर

40

आपके विचार दृढ़ता से टाइप किया है, तो आप नेस्टेड foreach साथ LINQ GroupBy विस्तार विधि का उपयोग कर सकते हैं:

<ul> 
<% foreach (var group in Model.GroupBy(item => item.Category)) { %> 

    <li><%= Html.Encode(group.Key) %> 
    <ul> 

    <% foreach (var item in group) { %> 
     <li><%= Html.Encode(item.Data) %></li> 
    <% } %> 

    </ul> 
    </li> 

<% } %> 
</ul> 

यह बहुत मूल प्रश्न में अपने स्वरूपित सूचियों की तरह उत्पादन प्रदान करेगा। ऐसा लगता है कि आपका मॉडल कुछ ऐसा दिखता है:

public class ViewModel 
{ 
    public string Category { get; set; } 
    public string Data { get; set; } 
}