スタックに関するいくつかの関連する質問がありますが、私が問題を解決する方法については、テーブル左外部結合。エラーはあなたが彼らがタイプ(RoleUser
とRole
)がマッピングされたLINQクエリで作成することができないように説明しRoleUser
とRole
は、エンティティオブジェクトエンティティまたは複合型 ''をLINQ to Entitiesクエリで構築することはできません.3つのテーブル外部結合
var query = from u in Context.Users
join ru in Context.RoleUsers on u.Id equals ru.UserId into plv
from x in plv.DefaultIfEmpty(new RoleUser())
join r in Context.Roles on x.RoleId equals r.Id into pii
from y in pii.DefaultIfEmpty(new Role())
orderby u.Id, y.Id
select new UserWithRole() { Id = u.Id, User = u, Role = y };
タイプにあなたが得るか:あなたは
IQueryable<T>
結果を必要としない場合、あなたはAsEnumerable()
を使用してLINQにオブジェクトコンテキストへの中間の匿名型の投影を使用して最終的な所望の投影を行うことができますそれ? 'UserWithRole'' RoleUser'または 'Role' –
パラメータがない' DefaultIfEmpty() 'を使用します。使用している過負荷はサポートされていません。 –
RoleUserまたはRoleの値が空の場合@IvanStoev null参照エラーが発生する –