2011-07-31 44 views
1

以下是我打算寫我的LINQ查詢的情況下,但它不工作:什麼是LINQ的爲繼

List <Clients>具有客戶信息,並在此列表中有List<JobCards>,它代表名單那個人的工作卡片。工作卡列表有一個名爲Status的屬性。我需要返回所有客戶列表中的所有活動工作卡。

可以在LINQ中完成嗎?

其他代碼可能如下:

BindingList<JobCard> activeJobs = new List<JobCards>(); 
foreach(var client in allClientList) 
{ 
    foreach(var jobCard in client.JobCards) 
    { 
     if (jobCard.Status == "Active") 
     { 
      activeJobs.Add(jobCard); 
     } 
    } 
} 

我在LINQ的學習階段。我確信我已經實施了一些錯誤,但我不知道如何解決它。這裏是我的LINQ查詢:

activeJobCards = new BindingList<JobCard>(
    mainForm.allData.Where(
     index => index.JobCards.Where(
      card => card.Status == "active" 
     ).ToList().Count > 0 
    ).ToList() 
); 

回答

2

你在找什麼是SelectMany

allClientList.SelectMany(c => c.JobCards).Where(jc => jc.Status == "Active"); 

SelectMany()會給你一個IEnumerable<JobCard>並從那裏你選擇活動的工作牌。

2
allClientList.SelectMany(c => c.JobCards.Where(jc => jc.Status == "Active")); 
1
BindingList<JobCard> activeJobs = new List<JobCards>(); 
activeJobs.AddRange(allClientList.SelectMany(x=> x.JobCards) 
           .Where(y => y.Status == "Active"));