MongoDB C驱动程序2.1中GroupBy上的LINQ选择
我在使用运行Mongo3.0的2.1C驱动程序的Mongo上遇到以下LINQ表达式问题。选择Id可以正常工作,但不选择A 下面的简单测试演示了我得到的错误 不支持指定的方法。 在MongoDB.Driver.Linq.Processors.AccumeratorBinder.GetAccumeratorArgumentExpression节点 如果它不受支持,有没有建议如何解决它而不必首先解开可查询项?我知道我可以使用mongo聚合框架,但这并不是我们想要的,因为我们在这里并没有接触到它,我也不希望在这个级别使用mongo特定的语法MongoDB C驱动程序2.1中GroupBy上的LINQ选择,mongodb,linq,mongodb-.net-driver,Mongodb,Linq,Mongodb .net Driver,我在使用运行Mongo3.0的2.1C驱动程序的Mongo上遇到以下LINQ表达式问题。选择Id可以正常工作,但不选择A 下面的简单测试演示了我得到的错误 不支持指定的方法。 在MongoDB.Driver.Linq.Processors.AccumeratorBinder.GetAccumeratorArgumentExpression节点 如果它不受支持,有没有建议如何解决它而不必首先解开可查询项?我知道我可以使用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; }
}
我无意中发现了另一个堆栈溢出问题。问题是第一个电话本身
引用octavioccl的回答:
我只是在看到这件事是否仍然是一个问题时才发现了你的问题,这似乎仍然是一个问题,这有点不幸。有趣。在运行您的建议时,Id最终为空。在遇到完全相同的问题后,我在上回答了一个非常类似的问题-我的groupByz=>z.key.selectz=>z.first返回了一个空项数组。
var statusesCollection = database.GetCollection<Status>("statuses");
var result= statusesCollection.AsQueryable()
.OrderByDescending(e=>e.date)
.GroupBy(e=>e.payment)
.Select(g=>new Status{_id =g.First()._id,
payment = g.Key,
code=g.First().code,
date=g.First().date
}
)
.ToList();
allA.GroupBy(x => x.Group).Select(x => new A
{
Id = x.First().Id,
Group = x.First().Group
}).ToArray();