2008-10-25 17 views
57

내가 DataTable에의 열 속성에 간단한 LINQ 쿼리를 수행하기 위해 노력하고있어 함께 :쿼리 DataColumnCollection은 LINQ

이를 찾을 수 없습니다 : 그러나

from c in myDataTable.Columns.AsQueryable() 
    select c.ColumnName 

, 내가 무엇을 얻을 것은 이것이다 소스 형식 'System.Linq.IQueryable'에 대한 쿼리 패턴의 구현. '선택'을 찾을 수 없습니다. 범위 변수 'c'의 유형을 명시 적으로 지정하는 것을 고려하십시오.

어떻게 DataColumnCollection을 LINQ와 함께 사용하면 좋을까요?

답변

100

대해 어떻게 : 당신은 또한 사용할 수

var x = from c in dt.Columns.Cast<DataColumn>() 
     select c.ColumnName; 
+2

@Dave :이 문제의 원인은 무엇입니까? 우리는 어떻게 캐스트()를해야합니까? –

+16

dt.Columns가 IEnumerable이지만 IEnumerable 이 아니기 때문입니다. 클래스가 조금 더 오래되었고 새로운 제네릭 타입을 구현하지 않는다는 사실의 함수 일뿐입니다. Cast <>()를 호출하면 확장 메서드가 정의 된 IEnumerable 으로 캐스팅됩니다. –

12

:

var x = from DataColumn c in myDataTable.Columns 
     select c.ColumnName 

효과적으로 데이브의 코드로 동일한 기능을 수행 할 것 "쿼리 식에 명시 적으로 입력 반복 변수는로 변환 캐스트 (IEnumerable) 호출 ", Enumerable.Cast<TResult> Method MSDN 문서에 따라.