2013-07-13 7 views
-1

IQueryable을 반환하는 메서드를 호출했습니다. 예 : var x = acDAL.GetData(); 3 개의 테이블 데이터를 결합하여 반환합니다. 이 IQueryable에서 데이터를 가져 오려고합니다. 예를 들면IQueryable에서 데이터를 가져 오는 방법?

var x = acDAL.GetData(); 
foreach(var item in x) 
{ 
    int id=item.Id; 
} 

어떻게하면됩니까?

var x = acDAL.GetData(); 
foreach(var a in x) { 
    int id=a.Id; 
} 

그러나 특히 된 IQueryable 이후, 즉 이미 것 일 경우 대부분 IEnumerable을 구현합니다

+0

는 참조 http://stackoverflow.com/questions/1578778/using-iqueryable-with-linq 그것은 당신이 내부에있는 데이터의 종류에 따라 달라 – Gray

+0

당신의 'IQueryable'. 'GetData' 메소드 내부에서 일어나는 일에 대해 더 많은 정보를 제공 할 수 있습니까? – Viper

+0

3 개의 테이블 데이터를 결합하여 반환합니다. 이 IQueryable에서 데이터를 가져 오려면 다음과 같이 입력하십시오. var x = acDAL.GetData(); foreach (var a in x) { int id = a.Id; } – user2579758

답변

0

당신은 예를 제공합니다. 문제는 당신이 두 가지 선택 사항이있는 .ID

입니다 :

  • T를 알고, 그리고 된 IQueryable-의-T
  • 동적 사용

후자는 변경 포함 캐스팅 귀하의 예제에서 vardynamic에 :

var x = acDAL.GetData(); 
foreach(dynamic a in x) { 
    int id=a.Id; 
} 

전자는 객체를 아는 것입니다. 시도해 보려면 a.GetType()을 사용하십시오. 그런 다음 :

var x = acDAL.GetData(); 
foreach(SomeType a in x) { 
    int id=a.Id; 
} 

또는 대안은 :

var x = (IQueryable<SomeType>)acDAL.GetData(); 
foreach(var a in x) { 
    int id=a.Id; 
} 
+0

답장을 보내 주신 Marc님께, 동적 솔루션으로 '개체'에 'Id'에 대한 정의가 포함되어 있지 않습니다. 및 .GetType()은 + \t \t입니다 .GetType() \t {<> f__AnonymousTypeb3'23 [System.Int32, System.Int32, System.Nullable'1 [System.Decimal], System.Nullable'1 [System .Int32], System.Nullable'1 [System.Boolean], System.Nullable'1 [System.Int32], System.Nullable'1 [System.Int32], System.Nullable'1 [System.Boolean], System. String, System.Nullable'1 [System.Int32], \t dynamic {System.RuntimeType} – user2579758

+0

@user 동적 인 접근법은 실제로 투영에 ID가있는 경우 잘 작동합니다. 익명 유형은 컨텍스트 외부에 노출 된 경우 작동 할 고통입니다. a.GetType(). GetProperty ("Id")는 무엇을 반환합니까? 없는? 또는 null이 아닌가? –

+0

a.GetType(). GetProperty ("Id")는 {Int32 Id}를 반환합니다. – user2579758

관련 문제