gpt4 book ai didi

dapper - 如何使用 Dapper.SqlBuilder 和 OrWhere 构建动态 sql 查询

转载 作者:行者123 更新时间:2023-12-05 00:18:40 27 4
gpt4 key购买 nike

我正在尝试为多个搜索词构建动态 Sql 查询。我大致了解如何使用构建器,但我不确定在循环中做什么,因为我实际上每次都需要 @term 不同(我认为)。不仅在查询中,而且在匿名类型中也要匹配。

我可以在查询字符串中使用 string.Format,但不确定如何在匿名类型中匹配它?

public async Task<List<Thing>> Search(params string[] searchTerms)
{
var builder = new SqlBuilder();
var template = builder.AddTemplate("SELECT * /**select**/ from ThingTags /**where**/ ");

for (int i = 0; i < searchTerms.Length; i++)
{
builder.OrWhere("value LIKE @term", new { term = "%" + searchTerms[i] + "%" });
}
...
}

在当前形式中,为术语“abc”“def”“ghi”创建的查询是
CommandType: Text, CommandText: SELECT *  from ThingTags WHERE  ( value LIKE @term OR value LIKE @term OR value LIKE @term ) 

Parameters:
Name: term, Value: %ghi%

最佳答案

那么这是进行查询构建的一种方法。我没有意识到参数最初可能是一个字典。

public async Task<List<Thing>> Search(params string[] searchTerms)
{
var builder = new SqlBuilder();
var template = builder.AddTemplate("SELECT * /**select**/ from ThingTags /**where**/ ");

for (int i = 0; i < searchTerms.Length; i++)
{
var args = new Dictionary<string, object>();
var termId = string.Format("term{0}", i.ToString());
args.Add(termId, "%" + searchTerms[i] + "%");
builder.OrWhere("value LIKE @" + termId, args);
}
...
}

关于dapper - 如何使用 Dapper.SqlBuilder 和 OrWhere 构建动态 sql 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37487201/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com