2012-11-21 6 views
0

현재 Linq를 사용하여 데이터 테이블에서 고유 한 값 목록을 검색하고 있습니다. 그런 다음 목록을 반복하고 첫 번째 목록의 각 값에 대한 값 목록을 검색하기 위해 linq 쿼리를 다시 호출합니다.Linq 쿼리와 SortedList <int, list <int>>

_keyList = new SortedList<int, List<int>>(); 
var AUGroupList = ProcessSummaryData.AsEnumerable() 
        .Select(x => x.Field<int>("AUGroupID")) 
        .Distinct() 
        .ToList<int>(); 
foreach (var au in AUGroupList) 
{ 
    var AUList = ProcessSummaryData.AsEnumerable() 
         .Where(x => x.Field<int>("AUGroupID") == au) 
         .Select(x => x.Field<int>("ActivityUnitID")) 
         .ToList<int>(); 
    _keyList.Add(au, AUList); 
} 

다음은 해당하는 두 번째 목록과 함께 정렬 된 목록에 값을 추가합니다. 위의 두 쿼리를 하나의 Linq 쿼리로 결합하여 별도로 호출 할 필요가 없습니다.

답변

2

당신이 뭔가를 할 수 있어야합니다. Key 속성에는 그룹 ID가 포함되고 Values 속성에는 고유 한 값 목록이 있습니다.

+0

대단히 감사합니다! 매력처럼 작동합니다. –

1

시도해 보셨습니까?

var _keyList = new SortedList<int, List<int>>(); 
var AUGroupList = ProcessSummaryData.AsEnumerable() 
        .Select(x => x.Field<int>("AUGroupID")) 
        .Distinct() 
        .Where(x => x.Field<int>("AUGroupID") == au) 
        .Select(x => x.Field<int>("ActivityUnitID")) 
        .ToList<int>(); 
    _keyList.Add(au, AUList); 
} 

공급자가 이에 대응해야합니다. 그렇지 않은 경우 다른 방법이 있습니다. 그런 다음 groupQuery을 통해 루프가 정렬 된 목록을 채울 수 있습니다

var groupQuery = from d in ProcessSummary.AsEnumerable() 
       group d by new { Key = d.Field<int>("AUGroupID") } into g 
       select new { GroupID = g.Key, Values = g.Distinct().ToList() }; 

:

관련 문제