C# string expression Frage

Kampfwurst Hugo

Lieutenant
Registriert
Jan. 2010
Beiträge
583
Hallo

Ich habe ein Problem beim durchsuchen eines DataTables. Es klappt nur mit einem Suchbegriff. Ich würde aber genre die Suchbegriffe z.b mit ; oder, trennen.

Code:
            string s = "t4,t5,t6";
            DataRow[] foundRows=null;
            string[] words = s.Split(',');
            foreach (string word in words)
            {
                string expression = "Message like '%"+word+"%'";
                string sortOrder = "Message";

                foundRows = DS.Tables[0].Select(expression, sortOrder);
                label1.Visible = true;

            }
            label1.Text = Convert.ToString(foundRows.Length);

Wenn im DT nun 1mal t4 und 3mal t6 vorkommt zeigt er mir nur 3x an.

Es reicht mir wenn ich den ersten treffer habe. also z.B t4 und t5 kommen in der Nachricht vor vor.
Dann sollte ich die Nachricht wo t4 vorkommt als String ausgeben.

Gruss Christoph
 
Du setzt in jedem Schleifendurchgang "foundRows". Folglich hast Du am Ende nur ein Ergebnis. Du musst Dir einen Weg überlegen, den Wert jedes Durchlaufs bzw. das Ergebnis zu speichern. Ich würde gleich addieren.
 
hier stand mülll... ich muss nochmal überlegen ;D
 
Du kannst deinen Code wie folgt erweitern: (ist ungetestet)
Code:
            string s = "t4,t5,t6";
            DataRow[] foundRows = null;
            string[] words = s.Split(',');
            foreach (string word in words)
            {
                string expression = "Message like '%"+word+"%'";
                string sortOrder = "Message";

                var tempRows = DS.Tables[0].Select(expression, sortOrder);
                if (foundRows == null)
                    foundRows = tempRows;
                else
                    foundRows = foundRows.Union(tempRows);

                label1.Visible = true;
            }
            label1.Text = Convert.ToString(foundRows.Length);

Die wesentlichste Änderung in dem Code ist die Verwendung der statischen Methode Union um arrays zu vereinen.

http://msdn.microsoft.com/de-de/library/bb341731(v=vs.110).aspx
 
Zurück
Oben