C# 在C中浏览带参数的词典

C# 在C中浏览带参数的词典,c#,dictionary,params,params-keyword,C#,Dictionary,Params,Params Keyword,我创建了一个方法,该方法接收未指定数量的字典参数,并扫描所有字典参数的内容,但没有涵盖相同的内容,它在第一个或第二个foreach中给出错误,这取决于我修复的内容。我不能解决这个问题。我怎样才能使这项工作顺利进行 我得到了params字典,我想浏览每一本字典的内容 我遵循的代码如下: public String getQuerySelectInner(String TABELA, params Dictionary<String, String> dictionaries) {

我创建了一个方法,该方法接收未指定数量的字典参数,并扫描所有字典参数的内容,但没有涵盖相同的内容,它在第一个或第二个foreach中给出错误,这取决于我修复的内容。我不能解决这个问题。我怎样才能使这项工作顺利进行

我得到了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;
}

你的代码甚至没有编译。您是使用记事本还是实际的IDE进行编码

无论如何,如果为参数添加括号,并将外部foreach更改为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;这意味着您不需要删除后面多余的逗号。

切勿使用字符串生成SQL。这有如此多的SQL注入概率。对象字典中的每个单词?对象不是从IEnumerable继承的,所以如何通过它进行foreach?这段代码生成的错误是什么???@it'sNotALie。如果不连接最终用户文本,SqlInjection如何实现?