私は正しく構築されたと思ったクエリから奇妙な結果を得ています。ラムダ式が正しくない
このクエリは、正しいれ、2つの値を返します。
int userId = GetUserId(); //Not exactly like this; simplified
var context = new Entities();
//Get the roles
var relations = (from q in context.UserHasRole
where q.UserId == userId
select q).ToList();
List<Roles> roles = new List<Roles>();
foreach (var item in relations)
{
Roles role = (from r in context.Roles
where r.Id == item.RoleId
select r).SingleOrDefault();
roles.Add(role);
}
return roles;
このクエリしかし、デシベルで4人の関係が存在しないので、めちゃくちゃ間違っている4つの値を返します!すべての可能な役割を返します。私には、関係が正しいuserIdとroleIdの両方を持つレコードだけを返すかのようにクエリが見えます。
//Get the roles
var roles = (from q in context.Roles
where context.UserHasRole.Any(o => o.UserId == userId)
&& context.UserHasRole.Any(p => p.RoleId == q.Id)
select q).ToList();
return roles;
ラムダクエリはどのように構成すればよいですか?
パーフェクト。私は似たようなことを試しましたが、それは正しくありませんでした。しかし、この1つのスポットです。どうもありがとうございます! – Phil
問題ありません!私はラムダ式が本当に好きです。それらを使ってリストを整理しますが、Linqはまだ使用していません。私は本当にチャンスを得るときにそれをチェックする必要があります。 :) – Paul