2016-10-06 1 views
1

LINQ 쿼리를 실행하려고합니다. 아래 코드에서 볼 수 있듯이 LINQ에 전달하기 전에 테이블 ("TableName")의 이름을 지정하려고합니다. 물론 LINQ는 "TableName"이라는 테이블을 찾을 수 없습니다. 이 작업을 수행하는 방법은 다른 방법이 있습니까? ctxdata 시도했다. (TableName)하지만 작동하지 않았다.동적 테이블 이름을 사용하여 LINQ 쿼리를 실행하십시오.

  var TableName = ""; 
      TableName = "DATA_ + DistrictCode; 

      using (SFTEMPEntities1 ctxdata = new SSFTEMPEntities1()) 
      { 
       var queryAttributes = (from p in ctxdata.TableName //See this line 
            where p.Filename == FileName 
            select new { p.REF , p.JOB_TITLE }) 
            .Take(1); 


      } 

저는이 코드를 기반으로 예제를 보여줄 수 있다면 여전히 C#의 초보자입니다.

+0

어쩌면이 질문에 (그리고 링크 된 질문에) 도움이 될 수 있습니다 http://stackoverflow.com/questions/28099435/dynamic-table- 이름에서 LINQ – robor78

답변

0

메서드를 사용하여 데이터 컨텍스트에서 테이블을 가져올 수 있지만 일반 매개 변수 Set<T>() 또는 Type 변수 Set(Type type)과 같은 요소 유형이 필요합니다. 그래서 테이블 이름으로 타입을 얻는 방법을 찾아야합니다. 형식 이름이있는 경우 어셈블리 이름에서 유형을 얻을 수 있습니다 ctxdata.GetType().Assembly.GetType("TypeName").

사용하여 반사이 같은 데이터 컨텍스트에서 테이블 속성을 얻을 수 있습니다 :

var table = ctxdata.GetType().GetProperty(TableName).GetValue(ctxdata) as IQueryable; 
관련 문제