Come arrivare unico Prima Lettera di nomi e contare di nomi che iniziano con quella lettera da SQL Server utilizzando LINQ?

StackOverflow https://stackoverflow.com/questions/872885

  •  22-08-2019
  •  | 
  •  

Domanda

Stavo giocando con ASP.NET MVC 1.0 un paio di giorni fa. Ho iniziato con una singola tabella DB denominata 'Contatti', con struttura molto semplice esempio Titolo, FullName, cognome, email, telefono, indirizzo ecc.

Sto usando LINQ come il mio modello.

A mio avviso principale che ho voluto per visualizzare un elenco di alfabeti che hanno FullNames corrispondenti che iniziano con quella alfabeto più il conteggio di FullNames. Someting simile come illustrato di seguito:

A - (2)
D - (4)
J - (1)
e così via. Una cosa particolare circa il display è che io non voglio visualizzare tali alfabeti che non hanno nomi che iniziano con loro.

Ho provato un paio di domande, ma non ci sono riuscito. Qualsiasi aiuto per risolvere questa query è apprezzato. Si prega di fornire il codice in linguaggio VB.NET.

Grazie.

È stato utile?

Soluzione

    var query = from c in contacts
                group c by c.FullName[0] into cg
                select new { FirstChar = cg.Key, Count = cg.Count() };

dovrebbe funzionare

Altri suggerimenti

C'è un esempio di MSDN che è molto simile:

public void Linq41() {
            string[] words = { "blueberry", "chimpanzee", "abacus", "banana", "apple", "cheese" };

            var wordGroups =
                from w in words
                group w by w[0] into g
                select new { FirstLetter = g.Key, Words = g };

            foreach (var g in wordGroups) {
                Console.WriteLine("Words that start with the letter '{0}':", g.FirstLetter);
                foreach (var w in g.Words) {
                    Console.WriteLine(w);
                }
            }
        }

Si dovrà cambiare le parole = g al conte = g.Count nell'istruzione SELECT, quindi si esegue una query solo la somma totale di elementi nel gruppo.

In VB.NET:

Dim FirstLetterCounts = From c In contacts _
                        Group c By Key = c(0) Into NameGroup _
                        Select FirstLetter = Key, Count = NameGroup.Count()

For Each g In FirstLetterCounts
    Console.WriteLine("First Letter = {0}, Count = {1}", g.Key, g.Count)
Next
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top