.net - 使用 GROUP BY 和 Count(*) 将 LINQ 查询为匿名类型

标签 .net vb.net linq group-by anonymous-types

我正在尝试使用 LINQ 查询来确定我拥有的每个特定对象类型的数量,并将这些值记录到匿名类型中。

假设我有一些看起来像这样的数据(确实有对象暴露了这个属性,但它的工作原理是一样的)

GroupId
1
1
2
2
2
3

我知道如何在 SQL 中格式化我的查询。它会是这样的:

SELECT grp = GroupId, cnt = COUNT(*)
FROM myTable
GROUP BY GroupId

在这种情况下,输出将类似于 this SQL Fiddle :
GroupID  Count
1        2
2        3
3        1

我如何在 vb.net 中用 LINQ 做同样的事情

Dim groupCounts = From person In data
                  Group By person.GroupId
                  Select new {group = person.GroupId, count = count(*)}

这不太正确,但我认为它很接近。

另外,对匿名类型不太了解,我真的可以声明groupCounts吗?提前,它将是一个项目的枚举,每个项目都有一个 group 和 count 属性?

最佳答案

我习惯了 C#:

var query = from person in data
            group person by person.GroupId into grouping
            select new { Key = grouping.Key, Count = grouping.Count() }

但是我已经在 VB 中测试了以下代码段并且它有效:
Dim files = Directory.GetFiles (Path.GetTempPath()).Take (100).ToArray().AsQueryable()

Dim groups = From f In files Group f By key = Path.GetExtension (f) Into Group
             Select Key = key, NumberGroup = Group.Count()

关于.net - 使用 GROUP BY 和 Count(*) 将 LINQ 查询为匿名类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16489405/

相关文章:

c# - 在序列化时调用 GetObjectData

c# - 如何测试目录是否隐藏在 C# 中?

c# - 有没有浏览器会自动添加内联CSS的场景?

mysql - 我收到 auto _Suggest 错误,错误为 "Object reference not set an instance of an object "

vb.net - Visual Studio 加载项不再允许我调试它

c# - 如何从音频文件中分离出声音?

c# - 字典c#的算术运算

c# - 使用 LINQ 检查特定变量的类列表

.net - Azure App Insights 中的 Rest API(后期)可用性测试

c# - 在 EF 中调用 SaveChanges() 后,将获取的旧记录保留在变量中