2012-04-25 4 views
1

저는 직원 목록을 보유하고 있으며 이들 중 하나에 DisplayList라고하는 다른 목록이 중첩되어 있습니다.최대 개수 목록 가져 오기 목록 내에서 중첩

이제는 모든 직원이 같은 양의 DisplayField를 사용하는 것은 아닙니다. 그래서 가장 높은 DisplayField를 가진 사람들을 만나서 디스플레이에 모든 사람들을 포함시킬 수 있기를 바랍니다. 다음 나는이 순간

: -

  int iMaxDisplayCount = 0; 
     foreach (Employee employee in employeeList) 
     { 
      int iDisplayCount = employee.EmployeeDisplayCollection.Count; 
      if (iDisplayCount > iMaxDisplayCount) 
       iMaxDisplayCount = iDisplayCount; 
     } 

     var employees = employeeList.GroupBy(p => p.EmployeeDisplayCollection.Count == iMaxDisplayCount).Select(g => g.ToList()); 
     foreach(var employeeHighList in employees) 
     { 
      foreach (var employee in employeeHighList) 
      {   

      }   
     } 

그러나 어떤 이유로, 나는 모든 employeeHighList의 직원과 가장 높은 디스플레이 횟수가 아니라 사람을 얻고있다.

GroupBy가 올바르지 않다고 생각하지만 잘못된 점은 알지 못합니다.

도움이 될 것입니다!

감사

+1

귀하의 질문은 정말 분명하지 않다. "모두를 디스플레이에 통합 할 수있게"한다는 것은 무엇을 의미합니까? http://tinyurl.com/so-hints를 읽고 더 명확하게 질문을 편집하십시오. –

답변

10
var max = employeeList.Max(e=>e.EmployeeDisplayCollection.Count); 

var maxEmp = employeeList.Where(e=>e.EmployeeDisplayCollection.Count == max) 
         .ToList() 
+0

@AdamHouldsworth, 네, EmployeeDisplayCollection이 항상 인스턴스가 되길 바랍니다. –

+0

안녕하세요, Adrian EmployeeDisplayCollection은 각 직원과 관련된 표시 영역 목록입니다. 그래서 모든 직원을위한 instace 예입니다. 그리고이 LINQ에 다시 한번 감사드립니다! 나는 그 해결책을 정말로 좋아한다. – Johann