1

在我的 MVC 3 项目中,我使用的是 MySQL 连接器。当我尝试调用该方法时,我得到了Specified method is not supported错误。为什么 ?

    public IList<Order> GetOrders()
    {
        return (from x in db.Order 
                where (x.Address.FirstOrDefault() != null) 
                orderby x.Created //it's a DateTime
                descending select x).ToList(); 
    }

编辑

我看有问题x.Address.FirstOrDefault() != null

编辑2

该代码也有效

return (from x in db.Order
             from y in db.Address
             where (y.OrderID == x.OrderID)
        orderby x.Created descending
        select x).ToList();
4

1 回答 1

3

对于某些 ORM 工具,并非所有 LINQ 方法都支持开箱即用。我知道我过去曾使用 NHibernate 收到过确切的信息。为了实现这一点,您必须重写逻辑以使用更传统的方法。尝试这个:

return (from x in db.Order 
            where x.Address.Count() > 0 
            orderby x.Created //it's a DateTime
            descending select x).ToList();

或者,如果由于某种原因您不喜欢上述内容,您的另一种选择是首先通过解析将集合放入内存,然后执行您的逻辑(尽管请记住,这会更慢,因为它会从数据库中带回更多数据):

return (from x in db.Order
            orderby x.Created //it's a DateTime
            descending select x)
       .ToList() //resolve the query, now work with it in memory from here
       .Where(x => x.Address.FirstOrDefault() != null)
       .ToList();
于 2012-05-14T21:22:54.793 回答