从 C 中的聚合函数中获取计数#

Getting count from aggregate function in C#

提问人:Ignacio 提问时间:11/9/2022 更新时间:11/9/2022 访问量:88

问:

我对 C# 中的 MongoDB 使用很陌生。我正在尝试获取与特定 .我在MongoDb中有这个函数:EmployeeId

db.Tickets.aggregate([
{$match: {employeeId: 3}},
{$count: "count"}
]);

(数字 3 只是一个例子)

这将返回以下内容: ,这是正确的。我想在 Visual Studio 的 C# 上获取该计数。{count: 4}

到目前为止,我已经在Visual Studio中创建了此方法:

public int GetUserTicketCount(User user)
{
  int count = collectionOfTickets.Aggregate()
  .Match(x => x.employeeId == user.GetEmployeeId())
  .Count()
  .FirstOrDefault()
  .Count();           
}

从我在 SO 和其他论坛中搜索的内容来看,这种方法应该有效;但是我收到一个错误“不包含定义,并且找不到接受类型第一个参数的可访问扩展(您是否缺少使用指令或程序集引用?AggregateCountResultCountCountAggregateCountResult

我该如何解决这个问题,或者如何在 C# 中获得计数结果?非常感谢任何和所有的帮助。

C# MongoDB 语法错误 聚合

评论


答:

1赞 dacastr 11/9/2022 #1

Count 是一个属性,而不是一个方法。

.Count应该工作。只需删除括号即可。

请参阅此处的官方文档:http://rstam.github.io/mongo-csharp-driver/2.5/apidocs/html/T_MongoDB_Driver_AggregateCountResult.htm

评论

0赞 Ignacio 11/9/2022
我已经这样做了,至少错误消失了。但是,当我在 listView 上显示此数字时,它显示为 .但是,这是一个很大的改进!我正在深入研究这个问题来解决这个问题。Systems.Collections.Generic.List'1[databaseName.Ticket]