2012-06-06 1 views
2

데이터 테이블에 대한 LINQ 쿼리에서 마법 문자열을 사용하지 않는 방법은 무엇입니까?linq 데이터베이스 문제로 열 이름이

 
public IEnumerable getDisplayNames() 
{ 
    IEnumerable nameQry = 
     from row in displayTable.AsEnumerable() 
     select row.Field("display"); 

    return nameQry; 
} 

을하지만이 실패 :

이 작동 "지정한 캐스트가 잘못되었습니다."

 
public IEnumerable getDisplayNames() 
{ 
    string disp = myDictionary["D"]; 

    IEnumerable nameQry = 
     from row in displayTable.AsEnumerable() 
     select row.Field(disp); 

    return nameQry; 
} 

내 환경 설정은 로컬 문자열 (또는 내 사전의 오프 직접 참조를 사용하는 것입니다) 문자열을 제자리에 하드 코딩하는 대신 그래서 내 쿼리에 "display"라는 구 대신에 disp라는 문자열을 사용하고 싶습니다.

답변

0

시도

static IEnumerable<DataRow> GetTheRows(DataTable dt, string name) 
{ 
    return dt.AsEnumerable().Where(r => r.Field<string>("yourColumn") == name); 
} 

또는 무엇이든 올바른 데이터 유형이 주어진 시나리오에를 사용하여. Field<T> 메소드를 사용할 때 유형을 지정해야합니다.