2013-08-19 2 views
0

Я создал метод, который получает неопределенное количество параметров словарей и просматривает содержимое всех из них, но то же самое не покрывает, он дает ошибку в первом или втором foreach, в зависимости от того, что Я сделаю. Consegundo'm не исправляет эту проблему. Как я могу сделать эту работу параке.Просмотр словарей с параметрами в C#

Я получаю словарь params, и я хочу просмотреть содержимое каждого из них.

Код, который я следую ниже:

public String getQuerySelectInner(String TABELA, params Dictionary<String, String> dictionaries) 
{ 
    String sql = "SELECT "; 

    foreach (Object dictionary in dictionaries) 
    { 
     foreach (var word in dictionary) 
     { 
      sql += word.Key + ","; 
     } 
    } 

    sql = sql.Remove(sql.Length - 1); 

    sql += " from " + TABELA + " WHERE situacao = 'ATIVO' "; 

    return sql; 
} 
+2

** НИКОГДА НЕ СДЕЛАЙТЕ SQL С STRINGS. ЭТО БОЛЬШЕ ВЕРОЯТЬ ИНТЕЛЛЕКТУАЛЬНОСТЬ SQL. ** –

+0

foreach слово в словаре объектов? 'object' не наследуется от' IEnumerable', так как вы можете его пропустить? – Nolonar

+1

Какая ошибка генерирует этот код? –

ответ

1

Ваш код не даже компиляции. Вы кодируете с помощью блокнота или реальной среды IDE?

Во всяком случае, если вы добавляете скобки для своих параметров и изменяете внешний внешний элемент на var, а не на листинг на объект, который он компилирует. Помогает ли вам дать вам то, что вы хотите?

public String getQuerySelectInner(String TABELA, params Dictionary<String, String>[] dictionaries) 
    { 
     String sql = "SELECT "; 

     foreach (var dictionary in dictionaries) 
     { 
      foreach (var word in dictionary) 
      { 
       sql += word.Key + ","; 
      } 
     } 

     sql = sql.Remove(sql.Length - 1); 

     sql += " from " + TABELA + " WHERE situacao = 'ATIVO' "; 

     return sql; 
    } 

Для дальнейшего улучшения вещи немного вы могли бы использовать string.join вместо вашего внутреннего цикла: sql += string.Join(",", dictionary.Keys);, что означает, что вам не нужно, чтобы удалить лишнюю запятую после.

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