2011-09-02 16 views
5

मेरे पास एक डेटाबेस फ़ील्ड है जिसमें string मान शामिल हैं। उनकी गिनती द्वाराटेक्स्ट से अधिकतम शब्द कैसे प्राप्त करें?

IEnumerable<string> allWords = from entry in table 
           from word in entry.Field.Split(' ') 
           select word; 

फिर उन्हें समूह:: मैं शीर्ष को खोजने के लिए एक तरह से देख रहा हूँ 10 अधिकतम क्षेत्र

+0

एक पंक्ति में एक स्तंभ, या पूरे तालिका में एक स्तंभ से? –

+0

क्या आपके पास प्रत्येक फ़ील्ड में एक शब्द है? –

+0

आप किस डेटाबेस का उपयोग कर रहे हैं? – briantyler

उत्तर

2
var result = 
    Regex.Matches(s, @"\b\w+\b").OfType<Match>() 
     .GroupBy(k => k.Value, (g, u) => new { Word = g, Count = u.Count() }) 
     .OrderBy(n => n.Count) 
     .Take(10); 
8

सबसे पहले उस क्षेत्र से सभी शब्दों को पाने से शब्दों हुई

IEnumerable<string> result = from word in allWords 
          group word by word into grouped 
           let count = grouped.Count() 
           orderby count descending 
           select grouped.Key; 

शीर्ष 10 परिणाम प्राप्त करें:

result.Take(10); 
+1

आप अंत में 'चयन' या 'समूह द्वारा' गायब हैं। याद दिलाने के लिए – leppie

+0

Thx –

2

यहाँ आप संख्याओं के साथ एक आसान उदाहरण है:

class Program 
{ 
    static void Main(string[] args) 
    { 
     int[] nums = new int[] { 2, 3, 4, 5, 6, 1, 2, 3, 1, 1, 1, 7, 12, 451, 13, 
      46, 1, 1, 3, 2, 3, 4, 5, 3, 2, 4, 4, 5, 6, 6, 8, 9, 0}; 
     var numberGroups = 
      (from n in nums 
      group n by n into g 
      orderby g.Count() descending 
      select new { Number = g.Key, Count = g.Count() } 
      ).Take(10); 

     Console.ReadLine(); 
    } 
} 

सादर

संबंधित मुद्दे