2017-01-13 2 views
0

Ich muss dies in meinen Codes tun;Erstellen Sie ein Array mit Schlüsseln und Werten aus der Datenbank

  1. Holen von Daten aus 2 Spalten in einer Datenbank (Arbeiter und trx_date)
  2. Platz die extrahierten Daten zu einer Datentabelle
  3. Explodieren der ersten Spalte der Datentabelle
  4. Platz exploded_laborer und trx_date auf ein Array mit

    key->exploded_laborer 
    exploded=>trx_date 
    

ich bin Nummer 3 I t müssen nur bekommen können o tun Nummer 4. Mein Code ist unter:

private void GetLocalData() 
{ 
    const string sql = @"SELECT laborer, trx_date from tbl_jobs WHERE trx_date BETWEEN @fromDate AND @toDate"; 
    var laborerDataTable = new DataTable(); 
    using (var conn = new SqliteAccess().ConnectToSqlite()) 
    { 
     using (var cmd = new SQLiteCommand(sql, conn)) 
     { 
      conn.Open(); 
      cmd.Parameters.AddWithValue("@fromDate", dtpFrom.Value.ToString("yyyy-MM-dd")); 
      cmd.Parameters.AddWithValue("@toDate", dtpTo.Value.ToString("yyyy-MM-dd")); 
      laborerDataTable.Load(cmd.ExecuteReader()); 
     } 
    } 
    var exploded = new List<string>(); 
    foreach (DataRow row in laborerDataTable.Rows) 
    { 

     exploded.Add(row["laborer"].ToString().Split('|')[0]); 
    } 
} 

Ihre Hilfe wird sehr geschätzt.

+0

Was Sie damit gemeint: 'Ich bin in der Lage zu Nummer erhalten 3 Ich muss nur Nummer 4 tun. Mein Code ist unten: 'Könntest du bitte klarer sein? –

+0

Ich bin in der Lage, die Schritte 1 - 3 zu tun. Ich weiß nur nicht, wie man den Schritt 4 programmiert. – Ibanez1408

Antwort

2

Ich denke, Sie sollten Dictionary<TKey,TValue> erstellen, die eine Sammlung von Schlüsseln und Werten darstellt. Dies könnte den Trick für Sie tun

laborerDataTable.AsEnumerable() 
       .Select(row => laborerDataTable.Columns.Cast<DataColumn>() 
         .ToDictionary(column => row[laborer] as string 
             column => row[trx_date] as string)) 

So ist die komplette Code wie

private void GetLocalData() 
{ 
    const string sql = @"SELECT laborer, trx_date from tbl_jobs WHERE trx_date BETWEEN @fromDate AND @toDate"; 
    var laborerDataTable = new DataTable(); 
    using (var conn = new SqliteAccess().ConnectToSqlite()) 
    { 
     using (var cmd = new SQLiteCommand(sql, conn)) 
     { 
      conn.Open(); 
      cmd.Parameters.AddWithValue("@fromDate", dtpFrom.Value.ToString("yyyy-MM-dd")); 
      cmd.Parameters.AddWithValue("@toDate", dtpTo.Value.ToString("yyyy-MM-dd")); 
      laborerDataTable.Load(cmd.ExecuteReader()); 
     } 
    } 
    var LabDict = laborerDataTable.AsEnumerable() 
       .Select(row => laborerDataTable.Columns.Cast<DataColumn>() 
         .ToDictionary(column => row[laborer] as string 
             column => row[trx_date] as string)) 
} 

bearbeiten aussehen könnte

Dies ist nur ein Dummy-Tabelle zu erstellen.

static DataTable GetTable() 
{ 
    // Here we create a DataTable with four columns. 
    DataTable table = new DataTable(); 
    table.Columns.Add("laborer", typeof(string)); 
    table.Columns.Add("trx_date", typeof(string)); 

    // Here we add five DataRows. 
    table.Rows.Add("Indocin", "12/12/2010"); 
    table.Rows.Add("Enebrel", "12/1/2011"); 
    table.Rows.Add("Hydralazine", "1/12/2012"); 
    table.Rows.Add("Combivent", "11/12/2013"); 
    table.Rows.Add("Dilantin", "12/11/2014"); 

    return table; 
} 

normaler Kern C# Weg

DataTable laborerDataTable = GetTable(); 
Dictionary<string, string> exploded = new Dictionary<string, string>(); 
foreach(DataRow row in laborerDataTable.Rows) 
{ 
    exploded.Add(row.Field<string>(0), row.Field<string>(1)); 
} 

Auch, wie drucke ich jede der Reihe zu einer Konsole?

foreach(var dct in exploded) 
{ 
    Console.WriteLine(dct.Key + " Date is " + dct.Value); 
} 
+0

Mohit, können Sie bitte zeigen Sie mir in der normalen Kern C# Weise. Ich kann Linq noch nicht benutzen. Wie drucke ich jede Zeile auf einer Konsole? Vielen Dank. – Ibanez1408

+0

was meinst du mit 'normal core C# way' solltest du' Dictionary' verwenden wollen oder nicht? Wenn ja, können wir das auch in der Schleife machen. –

+0

Wenn dies LINQ ist, würde ich es nicht verstehen, bitte mach es eine einfache Schleife. Vielen Dank. Aber wenn dies kein LINQ ist, dann denke ich, dass dies der einzige Weg ist, um es zu tun, oder wenn Sie es verständlicher machen können. Vielen Dank. – Ibanez1408

0

Einsatz im eingebauten HashMap in Java finden Sie den Code unten HashMap Karte = new HashMap <>(); Map.put (Schlüssel, Wert); Und um Daten von Kartennutzung map.get (key) es viel Funktion hat, vielleicht können Sie sie beziehen sich durch die Suche Java API

2

Wenn Sie das Ergebnis auf ein Schlüsselwertpaar dann erwarten, warum eine Anordnung? warum nicht ein Dictionary<string, string>? Sie können so etwas wie dies versuchen:

Dictionary<string, string> laborerDict = laborerDataTable.AsEnumerable() 
                  .ToDictionary(x => x.Field<string>("laborer"), 
                     x => x.Field<string>("trx_date")); 
0

wenn Sie haben wollen Key => Wert besser Sie Wörterbuch verwenden, anstatt Liste

var exploded = new Dictionary<string,string>(); 
foreach (DataRow row in laborerDataTable.Rows) 
{ 
exploded.Add(row["laborer"].ToString(),(row["trx_date"].ToString()); 
} 
Verwandte Themen