2011-08-01 4 views
0

나는 DetailedObject 멤버 중 on이 List 인 Dictionary를 보유하고 있습니다. Dictionary에 대한 쿼리를 작성하여 DetailedObject가 SubStructure의 필드 중 하나에 대해 특정 값을 갖는 모든 항목을 반환하려고합니다. 예 :C#의 사전 항목에 대한 LINQ 쿼리

public struct SubStructure 
{ 
    public int Id; 
    public string SubSpecificFile; 
} 

public class DetailedObject 
{ 
    public int Id; 
    public List<SubStructure> subs = new List<SubStructure>(); 
} 

public Dictionary<int, DetailedObject> dict = new Dictionary<string, DetailedObject>(); 

각 하위 구조는 0 개 이상의 DetailedObject 인스턴스 내에 나타날 수 있습니다. 내가 예를 들어, 그 각각의 DetailedObject은 "DICT"를 조회하고 싶은

은 "서브 우퍼는"컬렉션 3

+4

당신이있는 이유 모든 이유의 ID로 하부 항목을 포함 SubStructure에 대한 구조체를 사용하고 있습니까? – spender

+0

데이터 만 포함하기 때문에 구조체를 사용합니다. 추가 처리가 필요하지 않습니다. –

답변

6
var result = dict1.Where(kvp => kvp.Value.subs.Any(ss => ss.Id == 3)); 
+0

'ToDictionary (x => x.Key, x => x.Value)'를 끝에 추가하면 사전이 다시 끝납니다. – Zebi

+0

Id == 3과 관련된 'SubSpecificFile'변수의 컬렉션 (예 : ToList())을 가져 오려면 어떻게해야합니까? – Xarylem

6
dict.Values.Where(d => d.subs.Any(ss => ss.Id == 3)) 
+0

이렇게하면 각 사전 항목의 '키'가 누락됩니다. – Zebi

+0

OP 인용 : 각 상세 개체에 대한 '쿼리'dict "... 키를 가져올 필요 없음. – spender