2010-07-15 3 views
0

을 감안할 때 : LINQ - 런타임까지 열 이름을 알 수없는 경우 쿼리 작성 방법?

string metadata.XAxisColumn -- contains a column name (e.g., "Date") 
string metadata.YAxisColumn -- contains another columnname (e.g., "Close") 

내가 정면 컬럼의 이름을 알고

는 물론 내가 할 수있는 :

var query = from record in myView 
    where record.Date >= startDate && record.Date <= endDate 
    select record.Close 

그러나, 열 이름은 런타임까지 알려져 있지 않다. 그들은 metadata.XAxisColumnmetadata.YAxisColumn입니다.

과 같이 작동하는 쿼리를 구성하는 올바른 방법은 무엇입니까 :

당신은 ESQL/QueryBuilder (EF에 내장) 또는 Microsoft 동적 쿼리 (일명 동적 LINQ 하나를 사용
var query = from record in myView 
    where record.[metadata.XAxisColumn] >= startDate && record.[metadata.XAxisColumn] <= endDate 
    select record.[metadata.YAxisColumn] 
+0

개체 (즉, 레코드)는 어떤 유형입니까? –

+0

@Kieren - 그들은 제네릭 유형입니다 (나는이 문제의 일부라고 생각합니다). –

답변

1

- 무료 VS 통해 코드 갤러리).

1

당신은 '기록'개체의 유형에서 파생, 새로운 속성을 추가 할 수 있습니다

public class MyRecord : RecordBase 
{ 
    public XAxis 
    { 
     get 
     { 
      switch (metadata.XAxisColumn) 
      { 
       // for example only; this code will not compile because it depends what kind of object RecordBase is :) 
      case X: 
       return this.X; 
      case Y: 
       return this.Y;   
      } 
     } 
    } 
} 

희망이 도움이!

+0

당신이 어디로 갈 것인지를 알고 있습니다. 그리고 나는 정말로 거기에 가고 싶지는 않지만, 매우 가능성이 있습니다. 이런 식으로 끝내라. (향후 코드 유지 보수 및 모든 ...) –

관련 문제