选择Linq to Sql的多个表

时间:2013-04-16 13:45:11

标签: asp.net-mvc linq asp.net-mvc-4 linq-to-sql lambda

我有两张桌子。这些表之间存在一对多的关系。我想选择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>();
}

1 个答案:

答案 0 :(得分:2)

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

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

如果您正在使用实体框架,您可以加载'BankAccounts'属性以最小化数据库调用。

希望这有帮助。