2014-01-29 7 views
0

나는 이와 같이 동적 인 Linq 쿼리를 사용합니다. 결과 집합을 배열로 변환해야합니다. 그러나 IQueryable 형식을 배열로 변환 할 수 없습니다. 어떠한 제안?배열에 IQueryable 유형

내 코드 : - : foreach는 (쿼리에 var에 STR) -

var query = Data.AsEnumerable() 
       .AsQueryable() 
       .Select("new(it[\"Country\"] as Country)", "it") 
       .Take(10); 

foreach (string str in query) // **getting error Unable to cast object of type 'DynamicClass1' to type 'System.String** 
{ 

} 

나는 다음과 같이 사용하여 고정.

하지만 지금 다른 문제가 있습니다. 조건을 쿼리에 추가했습니다. 이제 오류가 발생했습니다. "'DataRow'"유형에 'Country'필드가 없습니다. 당신이 Dynamic LINQ 모든 확장을 사용하는 경우 다음과 같은 당신이 당신의 경우 str에 대한이

foreach (dynamic str in query) 
{ 
    .... 
} 

같은 예를 들어 코드를 변경할 필요가 있으므로, dynamic 요소 컬렉션을 반환 필드 개체 ​​내 쿼리

var query= Data.AsEnumerable().AsQueryable().Where("Country = @0", "London").Select("new (Country as Country)"); 
+0

? 'string str'이 무엇인지 설명하십시오. – Gabe

+1

'AsEnumerable(). AsQueryable()'은 너무 나쁜 아이디어 인 것 같습니다 ... – MarcinJuraszek

+0

reply.I 덕분에 고맙습니다. foreach (쿼리의 var str). 하지만 지금 또 다른 문제가 있습니다. 조건을 쿼리에 추가했습니다. 이제 오류가 발생했습니다. " 'DataRow'유형에 'Country'필드가 없습니다. 다음은 내 쿼리입니다. query = Data.AsEnumerable(). AsQueryable(). Where ("Country = @ 0", "London") Select ("new (Country as Country)"); – Dev

답변

1

입니다 Country

업데이트
당신이 AsEnumerable 전화를 걸거나 AsQueryable 당신은 당신이

Data.AsQueryable().Where("it[\"Country\"] = @0", "London") 

또는 당신이 할 수처럼 DataRow 구문을 사용하여 필요한 열 값을 필터링하려면 이렇게 할 때, DataRow의 컬렉션 작업 할 때 코멘트에서 질문에 대한
데이터의 경우는 DataTable입니다 당신이 한 느낌에 대한 유형을 지정하지 때까지

var query= Data.AsQueryable() 
       .Select("new (it[\"Country\"] as Country)") 
       .Where("Country = @0", "London") 

UPDATE2
같은 첫번째 선택합니까 D는 Object 그래서 당신이 그렇게 StringContains 방법이, Select 절은 Country 의지 String입니다 WhereSelect 필드 다음에 호출이 경우이

.... 
.Select("new(Convert.ToString(it[\"Country\"]) as Country)") 
.... 

같이 변경해야 할 수 있습니다

반환하기로 쿼리가 무엇
+0

감사합니다 Grundy. 그것은 일했다 .. :) – Dev

+0

한 번 더 의심. 쿼리를 var 데이터 = Data.AsEnumerable()으로 변경했습니다 .AsQueryable(). ("국가()로 새 (국가 [\"국가 \ "])" "엘"); . 이제 오류가 발생했습니다. "적용 가능한 메소드가 없습니다. '포함'유형 '개체'에 존재합니다." 어떤 도움이 필요합니까? – Dev

+0

나는 그것이 작동해야하는 것처럼 보았다. http://stackoverflow.com/questions/2455659/how-to-use-contains-or-like-in-a-dynamic-linq-query. 내 데이터에도 null 레코드가 포함되어 있기 때문에 그렇습니까? – Dev