我在使用运行Mongo 3.0的2.1 C#驱动程序时,在Mongo上有以下LINQ表达式问题。选择Id没有问题,但选择A会出现问题。
下面的简单测试演示了我遇到的错误。 “指定的方法不受支持。 MongoDB.Driver.Linq.Processors.AccumulatorBinder.GetAccumulatorArgument(Expression node)”
如果它不受支持,你有什么建议可以解决此问题,而无需首先取消查询?我知道我可以使用Mongo聚合框架,但这是不被接受的,因为我们在这里没有暴露给那个语法,并且我不想在这个级别使用Mongo特定语法。
下面的简单测试演示了我遇到的错误。 “指定的方法不受支持。 MongoDB.Driver.Linq.Processors.AccumulatorBinder.GetAccumulatorArgument(Expression node)”
如果它不受支持,你有什么建议可以解决此问题,而无需首先取消查询?我知道我可以使用Mongo聚合框架,但这是不被接受的,因为我们在这里没有暴露给那个语法,并且我不想在这个级别使用Mongo特定语法。
[Test]
public void TestLinqSelectOnGroupBy()
{
MongoClient mongoClient = new MongoClient();
var repo = mongoClient.GetDatabase("GroupSelect");
var a = new A() { Id = "1", Group = "A" };
var col = repo.GetCollection<A>("A");
col.InsertOneAsync(a);
var allA = col.AsQueryable(); // adding .ToArray(); will obviously make it work but that is not very efficient
var works = allA.GroupBy(x => x.Group).Select(x => x.First().Id).ToArray();
var fails = allA.GroupBy(x => x.Group).Select(x => x.First()).ToArray();
}
private class A
{
public string Id { get; set; }
public string Group { get; set; }
}