2012-06-06 4 views
2

Как я могу избежать использования магических строк в запросе LINQ для данных datatable?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; 
} 

Я предпочитаю использовать локальную строку (или прямую ссылку прочь MyDictionary) вместо жесткого кодирования строк. Поэтому я хочу использовать строку disp вместо фразы «display» в моем запросе.

ответ

0

Попробуйте использовать

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

или что-то правильный тип данных в вашем сценарии. Вам нужно указать тип при использовании метода Field<T>.

 Смежные вопросы

  • Нет связанных вопросов^_^