2015-02-26 15 views
5

यहाँ से समूह से एक एचटीएमएल स्ट्रिंग उत्पन्न कि मैं अपने वर्ग Assinantesमैं कैसे

new Assinante 
      { 
       City= "BAURU", 
       Num= 112, 
       ClientCode= 3123, 
       Phone= "1412345675" 
      }, 
      new Assinante 
      { 
       City= "BAURU", 
       Num= 45, 
       ClientCode= 3123, 
       Phone= "214464347" 
      } 

से एक सूची है और मैं सिटी, ClientCod और अंक है, जो मैं पहले से ही यहाँ किया है द्वारा समूह की जरूरत:

<div> 
    <h2>Bauru</h2> 
    <ul> 
     <li>3123</li> 
     <ul> 
      <li>112</li> 
      <ul> 
       <li>1412345675</li> 
      </ul> 
      <li>45</li> 
      <ul> 
       <li>214464347</li> 
      </ul> 
     </ul> 
    </ul> 
</div> 

किसी ग्राम की जा सकी:

var listGroup= (from a in lista 
      group a by new {a.City, a.ClientCode, a.Num}); 

फिर, मैं नीचे दिए गए उदाहरण की तरह, Linq के साथ एक एचटीएमएल स्ट्रिंग उत्पन्न करने के लिए की जरूरत मुझे कोई परेशानी है?

+3

के कारण नेस्ट foreach पसंद करते हैं तुम क्यों सी # का उपयोग कर एक एचटीएमएल स्ट्रिंग निर्माण कर रहे हैं? बस पूछना क्योंकि आपकी समस्या के आधार पर – konkked

+0

बेहतर समाधान हो सकता है क्योंकि मैं XElement का उपयोग कर क्लाइंट –

उत्तर

1

देखते हैं कि आप XElement का उपयोग कर वांछित एचटीएमएल उत्पन्न कर सकते हैं। मैं अपने नमूना Linq विधि सकल के साथ फिर से लिखा जा सकता है लगता है, लेकिन मैं अधिक पठनीय कोड

fiddle with demo

using System.Xml; 
using System.Xml.Linq; 
... 
     var xml = new XElement("div"); 

     foreach(var city in lst.GroupBy(x=>x.City)) 
     { 
      var cityXml = new XElement("h2", city.Key); 
      var cityUl = new XElement("ul");     
      foreach(var client in city.GroupBy(c=>c.ClientCode)) 
      { 
       var clientXml = new XElement("li", client.Key); 
       var clientUl = new XElement("ul"); 

       foreach(var num in client.GroupBy(cl=>cl.Num)) 
       { 
        var numXml = new XElement("li", num.Key); 
        var numUl = new XElement("ul");      
        foreach(var phone in num) 
        { 
         numUl.Add(new XElement("li",phone.Phone)); 
        } 
        clientUl.Add(numXml); 
        clientUl.Add(numUl); 
       }     
       cityUl.Add(clientXml); 
       cityUl.Add(clientUl); 
      } 
      xml.Add(cityXml); 
      xml.Add(cityUl); 
     } 

     string res = xml.ToString(); 
2

आप विशेषताएं जोड़ने का तरीका इस समस्या भी उदाहरण विकल्पों में शामिल है, जो संभवतः भविष्य में उपयोगी हो सकता है (स्टाइल या क्वेरी)

var html = new XElement("div", new XAttribute("class","dynamic-content"), 
        from i in lst.GroupBy(x=>new{x.City,x.ClientCode,x.Num}) select 
         new XElement("div",new XAttribute("class","city"), 
          new XElement("h1",new XAttribute("class","city-name"), i.Key.City), 
          new XElement("ul", 
           from k in i.GroupBy(a=>a.ClientCode) select 
             new XElement("li", 
              new XElement("h4",new XAttribute("class","client-code"), k.Key), 
              new XElement("ul", 
               from j in k.GroupBy(a=>a.Num) select 
                new XElement("li", 
                 new XAttribute("class","client-num"), j.Key , 
                 new XElement("ul", new XAttribute("class","phone-numbers"), 
                  from l in j select 
                   new XElement("li", new XAttribute("class","phone-number"), l.Phone) 
                ) 
               ) 
              ) 
             ) 
          ) 
         ) 
      ); 

के लिए एक्सएमएल के लिए LINQ का उपयोग कर सकते वास्तविक स्ट्रिंग बस प्राप्त करने के लिए का उपयोग html.ToString()

बेला here

+1

पर इस एचटीएमएल के साथ एक ईमेल भेजूंगा, लेकिन परिणाम – ASh

+0

@ASH में दिए गए प्रश्नों से एचटीएमएल से अलग है आउटपुट अलग है? क्या कोई कामकाज होगा? उत्पादन का परीक्षण करने के लिए एक मौका नहीं मिला है, तो अतिरिक्त अंतर्दृष्टि होगा उपयोगी – konkked

+0

साथ, thml है शुरू करने के लिए 'IEnumerable ()', 'string.Join (Environment.NewLine, एचटीएमएल)'

BAURU

  • 112
    • 1412345675

BAURU

  • 45
    • 214464347
ASh