2

我有两张桌子。这些表之间存在一对多的关系。我想选择 Company 表和 BankAccount List 表(用于适当的 CompanyID)。我怎样才能用 Linq-to-Sql 做到这一点?

public class Company
{
    // My Fields
    [Key]
    public Guid ID { get; set; }


    public string FullName { get; set; }

    // My virtual properties FOR relationships(one-to-one,one-to-many etc.).


    public virtual List<BankAccount> BankAccounts { get; set; }
}

public class BankAccount
{

    // My Fields
    //[ScaffoldColumn(false)]
    [Key]
    public Guid ID { get; set; }

    [ForeignKey("Companies")]
    public Nullable<Guid> CompanyID { get; set; }

    public string BankName { get; set; }




    // My virtual properties FOR relationships(one-to-one,one-to-many etc.).

    public virtual Company Company { get; set; }
}

我写如下,但我不喜欢它

List<List<BankAccount>> bankaccounts = new List<List<BankAccount>>();
foreach (var comp in companyRepository.Companies)
{
      List<BankAccount> banks = new List<BankAccount>();
      foreach (var bank in bankRepository.BankAccounts)
      {
          if (comp.ID == bank.CompanyID)
          {
              banks.Add(bank);
          }
      }
      bankaccounts.Add(banks);
      banks = new List<BankAccount>();
}
4

1 回答 1

2

我认为以下将产生相同的结果。

var bankaccounts = companyRepository.Companies.Select(c => c.BankAccounts)
                       .ToList();

如果您使用实体框架,您可以预先加载“BankAccounts”属性以最小化数据库调用。

希望这可以帮助。

于 2013-04-16T19:36:34.567 回答