Je suis un peu nouveau à Dapper et j'essaie de trouver un moyen propre de passer un paramètre de filtre à SQL Query pour une collection avec plus d'une propriété.Comment filtrer dans Dapper en utilisant une collection avec plusieurs propriétés?
Ma collection ressemble à ceci:
[{
Prop1: 'A Value 1',
Prop2: 'B Value 1'
},
{
Prop1: 'A Value 2',
Prop2: 'B Value 2'
}]
Ce qui devrait se traduire par une recherche quelque chose comme requête SQL ceci:
select *
from SampleTable
where
([ColumnA]='A Value 1' and [ColumnB]='B Value 1')
or ([ColumnA]='A Value 2' and [ColumnB]='B Value 2')
Note: Quelque chose comme ce qui est indiqué ci-dessous ne fonctionnera pas parce que les deux propriétés PropA et PropB doivent filtrer ensemble.
string query = @"select *
from SampleTable
where [ColumnA] in (@PropA_Value)
and [ColumnB] in (@PropB_Value)"
con.Query<T>(query, new{PropA_Value = PropA,PropB_Value = PropB}).AsList();
Merci Je pense que ce est vraiment utile. Bien que n'étant pas une solution intégrée dans Dapper, c'est certainement quelque chose qui est réutilisable et une bonne solution. Je pense que l'autre chose à garder à l'esprit avec cette solution est de vérifier l'injection SQL puisque nous n'utilisons pas la méthode Dapper par défaut pour passer les paramètres. – m0g
Ouais, ma solution est juste de montrer comment construire la chaîne de filtrage sans tenir compte d'autres avantages tels que l'injection SQL. – Yared
Ce lien mai également aider; https://github.com/tmsmith/Dapper-Extensions/wiki/Predicates voir la section 'Prédicats composés multiples (groupe de prédicats)' – Yared