2011-04-13 3 views
0

Northwind Customers 테이블을 사용하여 데이터 세트를 채우고 데이터 테이블을 가져옵니다.Dynamic Linq - 'datarow'유형의 속성이나 필드가 없습니다.

내가 동적 LINQ를 사용하여 동적으로

var qry = MyDataTable.AsEnumerable().AsQueryable().Select("new(Country)"); 

가 지금 내가 하드 코딩 한 국가를 COLUMNNAME을 선택하지만 그렇다하더라도 내가

No property or field 'Country' exists in type 'datarow' 

내가 결국 싶습니다이 오류를 얻고 싶은 것을 시도하고

이 질의를 변경하여 열 이름을 동적으로 가져옵니다.

도와주세요! 감사.

+3

답변의 옆에있는 체크 표시를 클릭하여 Slauma가 정답을 제공했음을 나타낼 수 있습니다 . –

답변

4

중요한 힌트는 여기 (굵게)입니다 :

없음 속성 또는 필드 '나라없는'존재 입력 '의 DataRow'는 DataTable 클래스의

확장 방법 AsEnumerableIEnumerable<T>을 반환합니다. 여기서 T는 DataRow 유형입니다. 이제 동적 LINQ의 Select 방법이이 유형DataRow 작업하고 싶어하지 않는 부동산 물론Country.

대신이 시도 할 수 :

var qry = MyDataTable.AsEnumerable().AsQueryable() 
    .Select("new(it[\"Country\"] as CountryAlias)"); 

it 지금 형 DataRow의 변수를 나타내며, 또한 아마도 이러한 유형의 방법과 위의 내 예제에서 인덱서를 사용할 수 있습니다. (동적 LINQ는 정수 인덱스를 사용하여 배열 요소에 액세스하는 것을 지원하지만 문자열 키가있는 인덱서에 액세스하는 것이 작동하는지는 확실하지 않습니다.)

+0

대단히 고맙습니다. – Graci

+0

var qry = MyDataTable.AsEnumerable(). AsQueryable() .Select ("new (국가 ["Country \ "])를 CountryAlias로 사용)"); – Graci

+0

예, 'as'가 필요한 것을 보았습니다. 나는 그것을 해결하기 위해 내 대답을 편집 할 것입니다. – Slauma