Как добавить параметры запроса в цикле - PullRequest
0 голосов
/ 04 апреля 2019

При добавлении параметров запроса для dapper в цикле, например:

if (model.UserGroupId != null && model.UserGroupId.Count>0)
{
    var list = model.UserGroupId;
    sql += " and ( CHARINDEX(','+@group_id+',',','+mem.group_id+',')>0 ";
    paras.Add("group_id", list[0].Trim());
    for (var i = 1; i < list.Count(); i++)
    {
        string data = "@group_id" + i;
        sql += " or CHARINDEX('," + data+ ",',','+mem.group_id+',')>0 ";
        paras.Add(data, list[i].Trim());
    }
    sql += " )";
}

, он не сообщает об ошибках, но результаты запроса неверны.Я не могу использовать динамический @ в результате поиска данных.Как я могу решить эту проблему?

Если я использую это, он может искать правильно:

if (model.UserGroupId != null && model.UserGroupId.Count > 0)
{
    var list = model.UserGroupId;
    sql += " and ( CHARINDEX(','+@group_id+',',','+mem.group_id+',')>0 ";
    paras.Add("group_id", list[0].Trim());
    for (var i = 1; i < list.Count(); i++)
    {
        //  string data = "@group_id" + i;
        sql += " or CHARINDEX('," + list[i].Trim() + ",',','+mem.group_id+',')>0 ";
        // paras.Add(data, list[i].Trim());
    }
    sql += " )";
}

Но у него есть проблемы с внедрением SQL.

1 Ответ

0 голосов
/ 08 апреля 2019
           var list = model.UserGroupId;
            sql += " and ( CHARINDEX(','+@group_id+',',','+mem.group_id+',')>0 ";
            paras.Add("group_id", list[0].Trim());
            for (var i = 1; i < list.Count(); i++)
            {
               **sql += " or CHARINDEX(','+@group_id"+i+"+',',','+mem.group_id+',')>0 ";
                paras.Add("@group_id" + i, list[i].Trim());**
            }
            sql += " )";

он может искать правильно

...