C# 不支持MongoDB驱动器linq

C# 不支持MongoDB驱动器linq,c#,mongodb,linq,mongodb-.net-driver,C#,Mongodb,Linq,Mongodb .net Driver,我对MongoDB比较陌生,并且发现自己更喜欢编写linq来提取数据,但当我尝试这样做时: var fieldList = await collection.AsQueryable<Change>() .Where(f => f.Area == area && f.AreaRecordId == id) .GroupBy(f => f.Field)

我对MongoDB比较陌生,并且发现自己更喜欢编写linq来提取数据,但当我尝试这样做时:

       var fieldList = await collection.AsQueryable<Change>()
                       .Where(f => f.Area == area && f.AreaRecordId == id)
                       .GroupBy(f => f.Field)
                       .Select(f => f.OrderByDescending(d => d.DateChange).FirstOrDefault())
                       .ToListAsync();
var fieldList=await collection.AsQueryable()
.Where(f=>f.Area==Area&&f.AreaRecordId==id)
.GroupBy(f=>f.Field)
.Select(f=>f.OrderByDescending(d=>d.DateChange).FirstOrDefault())
.ToListAsync();
我得到了一个错误: System.NotSupportedException:表达式树{document}.OrderByDescending(d=>d.DateChange).FirstOrDefault()中不支持System.Linq.Enumerable类型的FirstOrDefault

我知道并非linq的每个领域都得到支持

我的MongoDB存储更改文档。每个更改都有一个区域、一个区域记录id、一个字段id和一个日期更改属性。对于具有特定记录id的区域,我希望能够提取所有字段更改(即按字段id分组),但只能提取最近的更改


有什么想法我可以做到这一点吗?我尝试了一种更为本地的MongoDB方法,但马上就被卡住了。

是的,mongo驱动程序在复杂的linq查询中做得不太好。如果您想做的不仅仅是驱动程序支持的基本工作,还想将这些聚合查询与c#绑定,或者将json字符串交给驱动程序,那么您应该花一些时间学习普通的mongo聚合查询。是的,mongo驱动程序在复杂的linq查询中做得不太好。如果您想做的不仅仅是驱动程序支持的基本工作,还想用类似的东西将这些聚合查询绑定到c#,或者将json字符串交给驱动程序,那么您应该花一些时间学习简单的mongo聚合查询。