2010-07-16 5 views
17

저는 현재 LINQ 학습 과정을 진행하고 있으며 실제로 도움을받을 수 있습니다. 나는 내가 원하는 것이 가능한지 모르지만, 내가 내기를 걸어야한다면, 나는 그것이 틀림 없음을 확신한다.LINQ - 목록 내의 모든 항목을 목록에서 가져 옵니까?

저는 현재 _tables라는 개체 목록을 가지고 있으며이 개체 각각에는 속성 "Indexes"를 통해 노출 된 개체 목록이 있습니다. 본질적으로, 모든 _tables의 모든 인덱스를 포함하는 하나의 목록으로 끝내고 싶습니다.

var indexes = from TableInfo tab 
       in _tables 
       where tab.Indexes.Count > 0 
       select tab.Indexes; 

불행하게도,이 나에게 목록의 또 다른 목록을 제공하는 것 같다,하지만 색인 목록이 하나 개 이상의 값이 포함 된 경우에만 ... 어떤 방법으로이 있습니까 : 여기

내가 지금까지 가지고 무엇을 루프없이 이러한 모든 목록을 함께 얻으시겠습니까?

답변

34

SelectMany 확장 방법을 사용하고 싶습니다.

_tables.SelectMany(t => t.Indexes) 
+0

다음을 읽으십시오 : http://community.bartdesmet.net/blogs/bart/archive/2008/08/19/probably-the-most-powerful-linq-operator-selectmany.aspx –

5

tbischel의 답변 외에, 수행 할 쿼리 식 버전은 아래에 나와 있습니다.

var indexes = from TableInfo tab in _tables 
       from index in tab.Indexes 
       select index; 
4

당신은 where 절을 필요로하지 않으며, 당신은 또한

무엇인지 탭을 말할 필요가 없습니다 그리고 당신은 SelectMany

var indexes = (from tab in _tables).SelectMany(t => t.Indexes) 

를 사용해야합니다 또는 당신은 할 수 이 같은이 좀 더 잘 알고 syntaz

해야

var indexes = from tab in _tables 
        from t in tab.Indexes 
        select t; 

2
var rows = from item in table select item; 
관련 문제