我有两张桌子。这些表之间存在一对多的关系。我想选择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>();
}
答案 0 :(得分:2)
我认为以下结果会产生相同的结果。
var bankaccounts = companyRepository.Companies.Select(c => c.BankAccounts)
.ToList();
如果您正在使用实体框架,您可以加载'BankAccounts'属性以最小化数据库调用。
希望这有帮助。