1

私のMVC3プロジェクトでは、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

edit2

そのコードも機能します

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 に答える