2016-06-24 23 views
0

Angenommen, ich habe eine SQLite-Datenbank. Diese Datenbank hat eine Tabelle namens main mit 5 Spalten (id, c1, c2, c3, c4).C# undefinierte Menge an Objekt für den Datentyp (wie params [])

Kunde ruft executeQuery die wie folgt aussieht:

public Dictionary<int, Tuple<string, string, string, string>> executeSql(string statement) { 
     var ret = new Dictionary<int, Tuple<string, string, string, string>>; 
     var dbcmd = conn.CreateCommand(); 

     for(int i = 0; i < Entries; i++) { 
      dbcmd.CommandText = statement.Replace("i", i.ToString()); 
      var reader = dbcmd.ExecuteReader(); 
      //.... Evalulate query.... 
      ret.Add(); //add to Dic 
     } 
    } 

Ich habe keine Ahnung, wie viele Spalten der Client in seiner Erklärung verlangt. Gibt es einen Typ, mit dem ich in einem solchen Szenario richtig arbeiten kann? Was ich will, ist etw wie folgt aus:

Dictionary<int, Tuple<params[] string>> 

, die mich mit einer variablen Menge von Strings liefern würde in die Tuple hinzugefügt werden.

Wenn es nichts dergleichen gibt, gibt es einen sauberen Weg, um dies zu lösen, anstatt ein Array zu verwenden, das leere Einträge haben wird (wie es Schleifen brechen wird und schrecklich zu lesen und zu halten ist) und ich möchte nicht müssen Verwenden Sie 90% des gleichen Codes nur für jeden einzelnen Fall (aka executeSqlOne(), executeSqlTwo() usw.), da dies den Code stark aufblähen würde.

+0

Können Sie einige Beispiele für verschiedene Aussagen geben? Ich denke, Einträge ist die Anzahl der Spalten, nach denen der Kunde fragt. Ist Ihre Tabellenstruktur veränderbar? Was wäre, wenn Sie die Tabelle in ID, Parameternummer, Wert ändern würden? Dadurch erhalten Sie einen Wert für jede ID-Parameter-Kombination, die sql würde immer gleich aussehen und Sie können das Ergebnis zu Ihrem hinzufügen 'Dictionary >' –

+0

Ja-Wörterbuch > löst alles. Ich werde mich ausruhen, jetzt ist mein Geist scheinbar überarbeitet. – fasa123

Antwort

1

In diesem Fall, anstelle von Tuple<string, string, string, string> können Sie List<string> Ich glaube, und Sie müssen nicht über Anzahl der Spalten kümmern. Fügen Sie einfach die resultierenden Spalten zur Liste hinzu und geben Sie sie zurück.

+0

Wow ich sollte wirklich eine Pause bekommen. Ja offensichtlich hast du vollkommen recht. – fasa123