Entity framework EF4,Npgsql,M:M关系;未实现该方法或操作。";:/

Entity framework EF4,Npgsql,M:M关系;未实现该方法或操作。";:/,entity-framework,linq-to-entities,entity-framework-4,Entity Framework,Linq To Entities,Entity Framework 4,我对EF4和npgsql提供者的多对多关系有问题 我有3个表:Order、OrderStatus和OrderStatusDict(字典)。OrderStatus是一种变更日志-每个订单的状态变更都会添加到OrderStatus表中,并包含其实际日期和新状态我需要获取所有订单,其中status.OrderStatusDict.OrderStatusName==“待定”,所以我这样做: var lst = (from o in db.Order where o.OrderSta

我对EF4和npgsql提供者的多对多关系有问题

我有3个表:Order、OrderStatus和OrderStatusDict(字典)。OrderStatus是一种变更日志-每个订单的状态变更都会添加到OrderStatus表中,并包含其实际日期和新状态我需要获取所有订单,其中status.OrderStatusDict.OrderStatusName==“待定”,所以我这样做:

var lst = (from o in db.Order
           where o.OrderStatus
                       .OrderByDescending(s => s.Date)
                       .FirstOrDefault()
                       .OrdereStatusDict.OrderStatusName == "Pending"          
           select o).ToList();
我有一个例外:

准备时出错 命令定义。看内在 细节例外。 数据:{System.Collections.ListDictionaryInternal} 内部异常:{”方法或 操作未实现。“}

看起来OrderByDescending终止了我的查询,因为如果我评论

.OrderByDescending(s => s.Date)
一切正常,但我从db获得最早的订单状态:/


你能帮我吗?这是提供商的原因还是EF问题?你有什么想法可以让我用另一种方式得到吗?

我不会用这种方式写查询

尝试:

我猜状态比较应该不区分大小写


请注意,如果“最大日期”不是唯一的,则我的查询的行为与您的查询不同。我猜它要么是独一无二的,要么就是我的方式是正确的。

谢谢克雷格,你为我节省了几个小时的工作:)我真的很感谢你的帮助!
var lst = (from o in db.Order
           let maxDate = o.OrderStatus.Max(s => s.Date)
           where o.OrderStatus.Any(s => s.Date == MaxDate 
                                        && s.OrdereStatusDict.OrderStatusName.Equals("Pending", StringComparison.OrdinalIgnoreCase))
           select o).ToList();