2016-10-31 6 views
1

2つの条件のいずれかを満たすノートのリストを作成しようとしました。 1.作成したユーザーと一致します。 2.または、接続にリンクされています。LINQ to Entitiesメソッドが 'Boolean Exists(System.Predicate`1 [Entities.Connection])'メソッドを認識しません

次のコードを使用すると例外が返されます。私はこの例外がLinqがエンティティ表現に共通であることを知っています。しかし、私の質問はExistsの代わりに代わりの方法を使うことができますか?

"LINQ to Entitiesはメソッド 'Boolean Exists(System.Predicate`1 [Entities.Connection])メソッドを認識せず、このメソッドをストア式に変換できません。

_context.Notes 
     .Include(t => t.Connections) 
     .Where(t => t.CreatedUserId == userId || t.Connections.ToList().Exists(c => c.UserId == userId)) 
+1

エラーを検索してください。あなたに答えを与えることができる[重複](http://stackoverflow.com/questions/3846716/method-cannot-be-translated-into-a-store-expression)がいくつでもあります。 –

+4

ええ、これはここの非常に一般的なエラーメッセージです。とにかく、エラーメッセージがクリアされ、エンティティへのlinqが存在しないため、Any()またはContains()を使用するようにしてください。 – mfvjunior

答えて

4

ここでの問題は、Entity FrameworkがC#コードを理解せず、.Exists()を解析できないことです。

続くようになり、これを書いている別の方法:ここで

_context.Notes 
    .Include(t => t.Connections) 
    .Where(t => t.CreatedUserId == userId || t.Connections.Any(c => c.UserId == userId)); 

.ANYを()すべての接続がuserIdをに等しいユーザーIDを持っている場合はtrueを返します。

関連する問題