2012-04-01 29 views
2

を認識しません。何が問題ですか?LINQ to Entitiesは、メソッド 'Int32 Last [Int32]

int folderid = (from p in db.folder where p.isDefault == true select p.id).Last(); 

私は、LINQのは、任意の有効なSQLなステートメントにLast()を翻訳することはできません

LINQ to Entities does not recognize the method 'Int32 Last[Int32] 
    (System.Linq.IQueryable`1[System.Int32])' method, and this method cannot be 
translated into a store expression. 

答えて

5

このエラーが発生します。

int? folderid =(
     from p in db.folder 
     where p.isDefault == true 
     orderby p.id descending 
     select p.id 
    ).Take(1).SingleOrDefault(); 

私にはわからないので、取るためにあなたがあなたのスイート何かにorderby p.id descendingを変更する必要があります。だから、私の提案は、このようなorderby decendingTake(1)

たぶん何かになります。

+0

コレクションが空の場合、 'FirstOrDefault()'はこれを吹き飛ばすことはありません。しかし、私からはまだ+1が、これは正しいアプローチです。 –

+0

'Single()'や 'SingleOrDefault()'はもっと直感的ではないでしょうか? – MarcinJuraszek

+0

コレクションが空の場合、例外がスローされます。 それは本当ですか? – MHF

関連する問題