サムの答えを逸脱するために、LIKE演算子を使用して検索を少し簡単にする2つのヘルパーメソッドを作成した方法を次に示します。
まず、パラメーター化されたクエリを生成するメソッドを作成します。このメソッドは動的:を使用しますが、動的ではなく静的な型指定が必要な多くの場合、強く型付けされたジェネリックメソッドを作成する方が望ましいでしょう。
public static dynamic ParameterizedQuery(this IDbConnection connection, string sql, Dictionary<string, object> parametersDictionary)
{
if (string.IsNullOrEmpty(sql))
{
return null;
}
string missingParameters = string.Empty;
foreach (var item in parametersDictionary)
{
if (!sql.Contains(item.Key))
{
missingParameters += $"Missing parameter: {item.Key}";
}
}
if (!string.IsNullOrEmpty(missingParameters))
{
throw new ArgumentException($"Parameterized query failed. {missingParameters}");
}
var parameters = new DynamicParameters(parametersDictionary);
return connection.Query(sql, parameters);
}
次に、Dapperで機能するLike検索用語を作成するメソッドを追加します。
public static string Like(string searchTerm)
{
if (string.IsNullOrEmpty(searchTerm))
{
return null;
}
Func<string, string> encodeForLike = searchTerm => searchTerm.Replace("[", "[[]").Replace("%", "[%]");
return $"%{encodeForLike(searchTerm)}%";
}
使用例:
var sql = $"select * from products where ProductName like @ProdName";
var herringsInNorthwindDb = connection.ParameterizedQuery(sql, new Dictionary<string, object> { { "@ProdName", Like("sild") } });
foreach (var herring in herringsInNorthwindDb)
{
Console.WriteLine($"{herring.ProductName}");
}
そして、NorthwindDBからサンプルデータを取得します。

繰り返し作業を行うためのヘルパー拡張メソッドを取得できるので、このアプローチが好きです。