2012-06-06 50 views
2

如何避免在數據表的LINQ查詢中使用魔術字符串?linq as列名數據集問題

這工作:

 
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; 
} 

我的選擇是使用本地字符串(或直接引用過myDictionary的)而不是硬編碼字符串。所以我想在查詢中使用字符串disp而不是短語「display」。

回答

0

使用

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

或任何正確的數據類型是你定的場景嘗試。您需要在使用Field<T>方法時指定類型。