Vb.net 如何使用LINQ从SQL Server获取唯一的首字母和以该字母开头的名称计数?

Vb.net 如何使用LINQ从SQL Server获取唯一的首字母和以该字母开头的名称计数?,vb.net,linq,grouping,Vb.net,Linq,Grouping,几天前我在玩ASP.NETMVC1.0。我从一个名为“Contacts”的表DB开始,它的结构非常简单,例如标题、全名、姓氏、电子邮件、电话、地址等 我用LINQ作为我的模型 在我的主视图中,我想显示一个字母表列表,其中有匹配的全名,以该字母表加上全名计数开始。如下所示: A-(2) D-(4) J-(1) 等等显示器的一个特点是我不想显示那些没有名字开头的字母表 我尝试了几个问题,但没有成功。 感谢您对解决此问题的任何帮助。请提供VB.NET语言的代码 谢谢 var query = f

几天前我在玩ASP.NETMVC1.0。我从一个名为“Contacts”的表DB开始,它的结构非常简单,例如标题、全名、姓氏、电子邮件、电话、地址等

我用LINQ作为我的模型

在我的主视图中,我想显示一个字母表列表,其中有匹配的全名,以该字母表加上全名计数开始。如下所示:

A-(2)
D-(4)
J-(1)
等等显示器的一个特点是我不想显示那些没有名字开头的字母表

我尝试了几个问题,但没有成功。 感谢您对解决此问题的任何帮助。请提供VB.NET语言的代码

谢谢

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

应该有效

有一个非常类似的例子:

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);
                }
            }
        }
您必须将select语句中的单词=g更改为Count=g.Count,因此您只能查询组中项目的总和。

有一个非常类似的示例:

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);
                }
            }
        }
您必须将select语句中的单词=g更改为Count=g.Count,因此只能查询组中项目的总和。

在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
在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

嗨,谢谢你的回复。我正在测试您在LinqPad aginst my DB中提供的代码。这就是我得到的错误:“类'LINQPad.User.Contacts'没有默认属性,因此无法编制索引。”您好,感谢您的回复。我正在测试您在LinqPad aginst my DB中提供的代码。这就是我得到的错误:“类'LINQPad.User.Contacts'无法索引,因为它没有默认属性。”代码工作正常。谢谢。如果你能提供VB版本的代码,请这样做。代码工作完美。谢谢。如果你能提供VB版本的代码,请这样做。