2012-04-20 52 views
1
var list = new List<ListCreaditInBankView>(); 
var banktemp = m_banksRepository.Banks; 
foreach (Bank bank in banktemp) 
{ 
    var bankbranchtemp = m_banksRepository.BankBranches.Where(x => x.BankId == bank.Id); 
    foreach (BankBranch bankBranch in bankbranchtemp) 
    { 
     var creditortemp = m_creditorsRepository.Creditors.Where(x => x.BankBranchId == bankBranch.Id); 
     list.Add(new ListCreaditInBankView(){Bank = bank, Creditors = creditortemp}); 

    } 

} 

我需要得到List<ListCreaditInBankView>没有这些周期。如何转换为LINQ请求?

我试过了,但它只是得到了Creditors

var lists = (from bank in banksTemp 
         let creditorBank = m_creditorsRepository.GetCreditorBank(bank.BankBranches.Select(x => x.Id).ToList()) 
         select new ListCreaditInBankView() {Bank = bank, Creditors = creditorBank}).ToList(); 
+0

实体框架还是Linq2SQL? – walther 2012-04-20 10:50:28

+0

@walther看起来像Linq2SQL – mattytommo 2012-04-20 10:55:50

+0

@mattytommo你怎么能从这段代码中知道? :)我可以给你写一个与Linq2EF相同的代码。 – walther 2012-04-20 10:57:01

回答

1

尝试以下操作:

var lists = (from bank in m_banksRepository.Banks 
      select new ListCreaditInBankView 
      { 
       Bank = bank, 
       Creditors = creditorsRepository.GetCreditorBank(bank.BankBranches 
        .Select(x => x.Id).ToList()) 
      }).ToList(); 

或者如果你喜欢其他风格的LINQ(method chaining它的名字,感谢努曼:)):

var lists = m_banksRepository.Banks 
      .Select(bank => new ListCreaditInBankView 
      { 
       Bank = bank, 
       Creditors = creditorsRepository.GetCreditorBank(bank.BankBranches 
        .Select(x => x.Id).ToList()) 
      }).ToList(); 
+1

另一种风格被称为方法链! ;-) – Nauman 2012-04-20 10:58:44

+0

啊哈!我一直想知道,我会更新,谢谢! :) – mattytommo 2012-04-20 11:00:24