これら2つのクエリの違いは何ですか?LINQ to SQL結合クエリ0の代わりに1を返します
私はcodes1.Count()から1を取得していますが、codes2.Count()から1を取得していますが、両方とも0である必要があります。
IQueryable<SecurityCode> codes1 = (from user in dataBase.SecurityUsers
from code in user.SecurityCodes
where user.UsrUserName.Equals(code.UsrUserName)
&& user.UsrPhone.Equals(phone)
select code);
IQueryable<SecurityCode> codes2 = (from user in dataBase.SecurityUsers
where user.UsrPhone.Equals(phone)
select user.SecurityCodes.FirstOrDefault());
関係は、任意の説明は非常に理解されるであろう
下に表示されます。
FirstOrDefaultは、sourceが空の場合はデフォルト(TSource)を返します。それ以外の場合は、ソースの最初の要素(MSDN - http://msdn.microsoft.com/en-us/library/bb340482.aspx)を参照してください。 – adatapost
しかし、なぜ0の代わりに1が得られるのですか? –
あなたの最初のクエリも複雑ですが、 'user.SecurityCodesのコードから'暗示されているように、where句 'user.UsrUserName.Equals(code.UsrUserName)'の必要はありません。 .Equals –