生成されたSQLはクロス結合を行いますが、IDが一致するとインナー結合のように機能しますが、実際にC#でjoinキーワードを使用してこれを行う方が効率的ですか?それらは全てheirarchiclyとにかくIQueryableの構文は正しいですか?
項目が
PageRoles Pageクラスで関連しているので、あなたがプロパティに参加する方法を指定する必要はありませんそこの方法は、PageクラスでのIQueryableプロパティです
aspnet_Roles PageRoleクラスでのIQueryableプロパティです
var item = _repository.GetByKey(999);
var f = (from fd in item.PageRoles
from k in fd.aspnet_Roles
where Roles.GetRolesForUser().Contains(k.RoleName)
&& k.RoleId == fd.RoleId
select k.RoleName)
.Count();
EDIT:
次は、クラスのIQueryableプロパティの例です。例えば、以下のPageRoleクラスから
public IQueryable<aspnet_Role> aspnet_Roles
{
get
{
var repo=NorthCadburyWebsite.Models.aspnet_Role.GetRepo();
return from items in repo.GetAll()
where items.RoleId == _RoleId
select items;
}
}
==を等号に変更すると、スワップするとfd.RoleIdが左側に、k.RoleIdが右側にありますが、これは正しいと思います。私はまだ結合の目的と階層Thoの目的のために頭を上げようとしています... –
何らかの理由でfdを認識しないため、fd.aspnet_Rolesでjoin kを行うことはできません...? – Jon
私は最初に正しいと思う... K.RoleIDは、イコールの前に最初に行く。 –