2011-02-08 4 views
0

동적 LINQ 라이브러리 코드 샘플을 사용하여 일부 데이터를 동적으로 반환하고 있습니다. 반환하는 열의 개수는 사용자 입력에 따라 다릅니다. IQueryable을 IList로 열거합니다.어떻게 한 번에 한 필드 씩 IList를 단계별로 실행합니까?

내가해야 할 일은 한 번에 한 필드 씩 단계별로 진행하는 것입니다. IList의 행을 반복하면서 한 번에 한 행을 얻을 수 있지만, 필자의 삶은 컬렉션에서 한 필드를 끌어낼 수 없다.

예를 들어, 여기에 내가 두 개의 열을 반환하고 있습니다 (하드 테스트를위한 코딩하지만 자극에 사용자가 선택 필드 내용에 따라 변수가 될 것입니다) :

Dim Dynq = dc.dt _ 
        .Where("RUN_ID = """ & runNumber & """ and Upper_Pressure > 95") _ 
        .OrderBy("Upper_Pressure") _ 
        .Select(" new (Run_ID,Process)") 

     Dim something = DirectCast(Activator.CreateInstance(GetType(List(Of)).MakeGenericType(Dynq.ElementType), Dynq), IList) 

는 지금은 밖으로 필드를 당길 수 IList의 내가 좋아하는 뭔가 열 이름을 알고있는 경우 :

something.Run_ID.ToString 

하지만 난 런타임까지 사용하고 열을 알지 못해 동적으로 작동하지 않습니다 런타임에 설정되어 변수에 삽입.

그래서 요약에 나는이

1 | Auto 
2 | Auto 
3 | Manual 
4 | Manual 

같은 것을 보이는은 IList를하고 난 방법이 자동 다음 등 을 반환하고 반환하고 싶습니다 ...

나는 이것보다 더 많은 것을 배운 사람들의 도움에 크게 감사 할 것입니다.

답변

0

귀하의 질문은 약간 혼란,하지만 난 당신이 수익이 행 다음 열을 기준으로 위해 요소로 특정 열을 반환하도록 설정 평평 할 생각 ...

한 가지 방법, 당신이 사용할 수있는 SelectMany 연산자 . (C#에서 미안 내 머리가 한 추적을 돌고로!) 예를 들어

:

// Find flattened list of some explicitly specified property values... 
var flattened = something.SelectMany(e => new [] { e.Run_ID.ToString(), e.Process.ToString() }); 

그 무엇을 당신 후에, 그러나 그것은 올바른 방향으로 단계가 될 수 있는지 확실하지.

관련 문제