C#中的类关联(多对多关系)

时间:2018-08-17 20:12:06

标签: c# class associations

我试图弄清班级协会(很多关系)。

在给定的示例中,该关系定义为客户可以去很多分支,而分支可以有很多客户。

我将List<Customer>类中的Branch定义为属性,并将List<Branch>类中的customer定义为关联。

到此为止一切正常,但我无法显示哪个客户去哪个分支或哪个分支有特定客户。

我尝试了linq quires和一个foreach循环来获得所需的结果,但是我无法获得它们。请帮帮我。

class Branch
{
    public string BranchName { get; set; }
    public string BranchAddress { get; set; }

    public List<Customer> Customers { get; set; }

    public void SetCustomerAssociation(List<Customer> customers)
    {
        Customers = customers;
    }
}

class Customer
{
    public string CustomerName { get; set; }
    public string CustomerAddress { get; set; }
    public string CustomerEmail { get; set; }

    public List<Branch> Branches { get; set; }

    public void SetBranchAssociation(List<Branch> branches)
    {
        Branches = branches;
    }
}

class Program
{
    public static void Main(string[] args)
    {
        List<Branch> Branches = new List<Branch>(100);
        List<Customer> Customers = new List<Customer>(100);

        var branch = new Branch();
        Branches.Add(branch);

        var customer = new Customer();
        Customers.Add(customer);

        branch.SetCustomerAssociation(Customers);
        customer.SetBranchAssociation(Branches);
    }
}

1 个答案:

答案 0 :(得分:0)

如果您有这样的关系,则不需要任何循环就可以使女巫分支具有特定的客户或巫婆客户具有特定的< strong>分支。

您可以通过 Customer.Branches Branch.Customers 获得所有这些信息。

当然,您可以编写另一个方法,例如Customer.HasBranch(分支分支),它可能看起来像这样:

class Customer
{
   ..
  public Branch HasBranch(Branch branch) => Branches.FirstOrDefault(b => b == branch);
}

但是您必须记住,如果要删除某个分支,则必须始终从列表中有该分支的所有客户中删除它,反之亦然。我认为,如果您创建一个同时包含 Branch Customer 的新类并通过此类绑定它们,那将是更好的解决方案。