다음

2011-07-31 3 views
1

을 다음에 대한 Linq는 것 내가 내 LINQ 쿼리를 작성하고자하는 경우이지만, 그것은 작동하지 않습니다다음

List <Clients> 클라이언트 정보를 가지고 있으며,이 목록의 목록을 나타냅니다 List<JobCards>,이 그 사람의 직업 카드. 직업 카드 목록에는 Status이라는 속성이 있습니다. 모든 클라이언트 목록에있는 모든 활성 작업 카드를 반환해야합니다.

LINQ로 처리 할 수 ​​있습니까? 내가 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); 
     } 
    } 
} 

을 다음과 같이

다른 코드가 될 수있다. 내가 구현 한 것에 약간의 오류가 있다는 것이 확실하지만, 그것을 고칠 방법이 확실치 않습니다. 당신이 찾고있는 무엇

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>을 줄 것이다 거기에서 당신은 활성 작업 카드를 선택입니다 : 여기 내 LINQ 쿼리입니다.

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")); 
관련 문제