LINQ クエリを希望どおりに出力するのに問題があります。私は正しいアプローチを取っているかどうか確信が持てません。
テーブル:
私は 2 つのテーブルContacts
を持っており、それを使用してLEFT OUTER JOINPermissions
を実行しています。
結合クエリ:
from contact in Contacts
join permission in Permissions on contact.Id equals permission.ObjectId into permissionGrp
from p in permissionGrp.DefaultIfEmpty()
where (p==null && isAllowed) || (p!=null && /* ... further conditions */))
orderby /* ... ordering removed */
select new { contact, permission = p };
これは、該当する場合、およびnull
一致する権限が存在しない場合に、権限を連絡先に一致させます。
望ましい
連絡先を重複させたくありません。最初の Contact-Permission レコードだけに関心があります。そのようです:
試み:
だから私は、パーミッションコレクションをどうにかして選択する必要があるとGroup By
思いました。contact.Id
FirstOrDefault()
from contact in Contacts
join permission in Permissions on contact.Id equals permission.ObjectId into permissionGrp
from p in permissionGrp.DefaultIfEmpty()
where (p==null && isAllowed) || (p!=null && /* ... further conditions */))
orderby /* ... ordering removed */
group p by contact into contactPermissionsGrp
select new { contact = contactPermissionsGrp.Key, permission = contactPermissions.FirstOrDefault() };
結果:
残念ながら、これはNotSupportedException: Specific method is not supported.
. しかし、私のアプローチが正しいのか、それともLightSpeed ORM の制限なのかはわかりません。
アドバイスをいただければ幸いです。