Wie einzigartig ersten Brief von Namen zu erhalten und mit diesem Schreiben von SQL Server Start von Namen zählen mit LINQ?
Frage
ich mit ASP.NET MVC 1.0 ein paar Tagen spielt. Ich begann mit einem einzigen Tisch DB namens ‚Kontakte‘, mit sehr einfacher Struktur z.B. Titel, Fullname, Name, E-Mail, Telefon, Adresse etc.
Ich bin mit LINQ als mein Modell.
In meiner Hauptansicht wollte ich eine Liste von Buchstaben angezeigt werden, die passenden volle Namen haben mit dem Alphabet beginnen plus der Anzahl der vollen Namen. Some ähnlich wie unten dargestellt:
A - (2)
D - (4)
J - (1)
und so weiter. Eine besondere Sache über das Display ist, dass ich möchte nicht jene Alphabete anzuzeigen, haben keine Namen mit ihnen beginnen.
Ich habe versucht, ein paar Anfragen, aber nicht gelang. Jede Hilfe dieser Abfrage lösen wird geschätzt. Bitte geben Sie den Code in VB.NET Sprache.
Danke.
Lösung
var query = from c in contacts
group c by c.FullName[0] into cg
select new { FirstChar = cg.Key, Count = cg.Count() };
sollte funktionieren
Andere Tipps
Es ist ein Beispiel auf MSDN dass sehr ähnlich:
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);
}
}
}
Sie müßten die Worte ändern = g = g.Count in der select-Anweisung an den Grafen, so dass Sie nur die Gesamtsumme der Elemente in der Gruppe abgefragt werden.
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