SQLには次のようなテーブルがあります:
PersonOrganisationRole
次の列があります。
PersonId, OrganisationId RoleId
つまり、人、組織、役割の間の 3 方向のテーブルです。
そのため、個人が属するすべての組織を取得する方法を作成したいと考えていました。
public class Person
{
public IEnumerable<Organisation> Organisations
{
get
{
var organisations = new List<Organisation>();
foreach (var personOrganisationRole in PersonOrganisationRoles.Where(personOrganisationRole => !organisations.Contains(personOrganisationRole.Organisation)))
{
organisations.Add(personOrganisationRoles.Organisation);
}
return organisations;
}
}
}
したがって、基本的には、テーブル内のすべての項目を繰り返し処理し、組織をまだ追加していない場合にのみ組織を追加することで、リストを作成しています。個人が組織で複数の役割を持つ可能性があるため、同じ PersonId と OrganizationId を持つテーブルに複数の行が存在する可能性があるため、これは重要です。
このコードを書くためのはるかに良い方法があるはずですが、私は考えています。
助言がありますか?