2016-05-25 10 views
2

現在、どのユーザーがどのグループにアクセスできるかを制限しようとしていますが、linqを使用してこれを行っています。関連するグループをビューに追加するときに、私の問題が発生します。Linq:メソッドをストア式に変換できません

私は入れませんエラーがある:エンティティへ

LINQは方法「 GetUserId(System.Security.Principal.IIdentity)可能System.String」メソッドを認識しない、そしてこの 方法は、翻訳することはできません店舗の表現

にこれは私のコードです:

var groupUser = db.GroupUsers.Where(u => u.ApplicationUserId == User.Identity.GetUserId()).Select(gr => gr.GroupId); 
    pv.GroupList = db.Groups.Where(g => groupUser.Contains(g.Id)).ToList(); 
    return View(pv); 
+0

抽出 'User.Identity.GetUserId()'変数に。 –

+0

これが助けになりました!ありがとう! – Seb

答えて

12

あなたは0を呼び出す必要がありますラムダ式外、エンティティへのLINQは、SQL対応に翻訳することができないように(もちろんGetUserId()のためのSQLの代替はありません):

var userId = User.Identity.GetUserId(); 
var groupUser = db.GroupUsers.Where(u => u.ApplicationUserId == userId) 
          .Select(gr => gr.GroupId); 
関連する問題