Dapper.net dynamique ou requête

dapper

Question

Nouveau en utilisant Dapper et besoin d'un peu d'aide. J'ai un fichier .csv que je vais lire pour générer dynamiquement une instruction select.

Le contenu du fichier .csv ressemble à ceci:

id,fromDate,toDate
1,20100101,20110101
2,20110101,20120101
3,20100101,20120101
etc...

La requête que je dois générer dynamiquement doit être:

SELECT * FROM targetTable WHERE (id = 1 AND cDate BETWEEN 20100101 AND 20110101) OR (id = 2 AND cDate BETWEEN 20110101 AND 20120101) OR 
OR (id = 3 AND cDate BETWEEN 20100101 AND 20120101)

Comment puis-je le faire avec Dapper?

Réponse acceptée

Pourquoi ne pas simplement construire votre requête?

En supposant que vous avez toutes vos données sous cette forme après avoir lu le fichier csv et que vous le mettez dans les classes:

public class Data
{
    public int ID { get; set; }
    public int FromDate { get; set; }
    public int ToDate { get; set; }
}

Je voudrais simplement passer la chaîne de requête:

List<string> lines = new List<string>();
foreach (var data in listData) // listData ... List<Data>
{
    string line = string.Format("(id = {0} and cdate between {1} and {2})", data.ID,data.FromDate, data.ToDate);
    lines.Add(line);
}

string additionalQuery = string.Join(" OR ", myLines);

et alors...

var result = sqlConnection.Query<MyQueryData>(string.Format("SELECT * FROM targetTable WHERE {0}", additionalQuery));

Travaillera très bien ...



Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi
Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi