Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MongoDB C驱动程序2.1中GroupBy上的LINQ选择_Mongodb_Linq_Mongodb .net Driver - Fatal编程技术网

MongoDB C驱动程序2.1中GroupBy上的LINQ选择

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聚合框架,但这并不是我们想要的,因为我们在这里并没有接触到它,我也不

我在使用运行Mongo3.0的2.1C驱动程序的Mongo上遇到以下LINQ表达式问题。选择Id可以正常工作,但不选择A

下面的简单测试演示了我得到的错误

不支持指定的方法。 在MongoDB.Driver.Linq.Processors.AccumeratorBinder.GetAccumeratorArgumentExpression节点

如果它不受支持,有没有建议如何解决它而不必首先解开可查询项?我知道我可以使用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; }
    }
我无意中发现了另一个堆栈溢出问题。问题是第一个电话本身

引用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();