У меня возникла проблема с выражением LINQ на Mongo с использованием драйвера 2.1 C#, работающего с Mongo 3.0. Выбор Id работает нормально, но не выбирает A.LINQ Выберите в GroupBy в MongoDB C# драйвер 2.1
Следующий простой тест демонстрирует ошибку, которую я получаю.
Указанный способ не поддерживается. в MongoDB.Driver.Linq.Processors.AccumulatorBinder.GetAccumulatorArgument (Выражение узла)
Если он не поддерживается, любые предложения, как обойти это без того, чтобы размотать запрашиваемых первым? Я знаю, что я могу использовать структуру совокупности 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; }
}
Я ответил на очень похожий вопрос на https://stackoverflow.com/a/45887800/346272 после того, как столкнулся с одной и той же проблемой - моя группаBy (z => z.key) .select (z => z.first()) возвращает массив нулевых элементов. – scaryman