Я знаю, що це старе запитання (наприклад, 5 років), але я боровся з тим самим. Повна відповідь - у коментарях до іншої відповіді, але я думав, що запропоную тут повний приклад.
string query = "SELECT * FROM MyTableName WHERE Foo = @Foo AND Bar = @Bar";
Dictionary<string, object> dictionary = new Dictionary<string, object>();
dictionary.Add("@Foo", "foo");
dictionary.Add("@Bar", "bar");
var results = connection.Query<MyTableName>(query, new DynamicParameters(dictionary));
Або, щоб бути повністю динамічним, ви можете створити такий метод, який буде приймати будь-яку модель, будь-який запит та будь-який набір параметрів запиту:
public static IEnumerable<T> Get<T>(string query, Dictionary<string, object> dictionary)
{
IEnumerable<T> entities = connection.Query<T>(query, new DynamicParameters(dictionary));
return entities;
}
А потім викликати цей метод:
var results = Get<MyTable>(query, dictionary)
РЕДАГУВАТИ ДОВГО ПІСЛЯ
Ця відповідь продовжує отримувати голоси, тому, мабуть, це все ще є необхідністю. Я взяв це рішення і створив цілий пакет доступу до даних NuGet, побудований поверх Dapper. Це зменшує ваші CRUD та операції запиту до одного рядка коду.
Ось пакет NuGet .
new DynamicParameters(dictionary)
і це буде працювати чудово.