Как получить уникальную первую букву имен и количество имен, начинающихся с этой буквы, с SQL Server с использованием LINQ? - PullRequest
0 голосов
/ 16 мая 2009

Я играл с ASP.NET MVC 1.0 пару дней назад. Я начал с одной таблицы БД с именем «Контакты», с очень простой структурой, например Название, ФИО, Фамилия, Электронная почта, Телефон, Адрес и т. Д.

Я использую LINQ в качестве моей модели.

На моем главном экране я хотел отобразить список алфавитов, которые имеют полные имена, начинающиеся с этого алфавита плюс количество полных имен. Примерно так, как показано ниже:

A - (2)
D - (4)
J - (1)
и так далее. Особенность дисплея заключается в том, что я не хочу отображать те алфавиты, у которых нет имен, начинающихся с них.

Я попробовал пару запросов, но безуспешно. Любая помощь для решения этого вопроса приветствуется. Пожалуйста, предоставьте код на языке VB.NET.

Спасибо.

Ответы [ 3 ]

3 голосов
/ 16 мая 2009
    var query = from c in contacts
                group c by c.FullName[0] into cg
                select new { FirstChar = cg.Key, Count = cg.Count() };

должно работать

0 голосов
/ 16 мая 2009

В 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
0 голосов
/ 16 мая 2009

На MSDN есть пример, который очень похож:

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);
                }
            }
        }

Вы должны изменить слова = g на Count = g.Count в операторе выбора, чтобы вы запрашивали только общую сумму элементов в группе.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...