在 sql 我有一个像这样的表:
PersonOrganisationRole
其中有以下列:
PersonId, OrganisationId RoleId
所以这是一个人、组织和角色之间的三向表。
所以我想创建一种方法来获取一个人所属的所有组织:
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 和 OrganisationId,因为一个人在一个组织中可能有多个角色。
我在想,虽然必须有更好的方法来编写这段代码。
有什么建议么?