myCSharp.de - DIE C# und .NET Community
Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 
 | Suche | FAQ

» Hauptmenü
myCSharp.de
» Startseite
» Forum
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Suche
» Regeln
» Wie poste ich richtig?
» Forum-FAQ

Mitglieder
» Liste / Suche
» Wer ist wo online?

Ressourcen
» openbook: Visual C#
» openbook: OO
» Microsoft Docs

Team
» Kontakt
» Übersicht
» Wir über uns

» myCSharp.de Diskussionsforum
Du befindest Dich hier: Community-Index » Diskussionsforum » Entwicklung » Grundlagen von C# » DataTable Filtern mit String-Verkettungen ?
Letzter Beitrag | Erster ungelesener Beitrag Druckvorschau | Thema zu Favoriten hinzufügen

Antwort erstellen
Zum Ende der Seite springen  

DataTable Filtern mit String-Verkettungen ?

 
Autor
Beitrag « Vorheriges Thema | Nächstes Thema »
echdeneth echdeneth ist männlich
myCSharp.de-Mitglied

Dabei seit: 05.06.2019
Beiträge: 49
Entwicklungsumgebung: C# / Visual Studio 2017/19
Herkunft: Sachsen


echdeneth ist offline

DataTable Filtern mit String-Verkettungen ?

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Ich möchte Strings für einen Datatable Filter verketten, nach folgendem Schema:

C#-Code:
dt.DefaultView.RowFilter = string.Join(" AND ", filter)

Als Quelle nehme ich ein Array (filter). Soweit so gut.

Wenn ein String des Arrays jedoch keine Daten enthält (""), werden die Strings dennoch verkettet:

Wert1 = 'bla' AND Wert2 LIKE 'blabla' AND

Natütlich könnte ich auch Tonnenweise Zeilen schreiben mit Zahllos verschachtelten IF's und dergleichen, aber da muss es doch was besseres geben... mir fällt nur nichts ein
15.11.2019 14:23 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Abt
myCSharp.de-Team

avatar-4119.png


Dabei seit: 20.07.2008
Beiträge: 13.437
Herkunft: Stuttgart/Stockholm


Abt ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Du kannst die gebundene Quelle problemlos mit Linq und entsprechenden Expressions vorfiltern, bevor die gebunden wird.
Dann brauchste diese String-Frickerlei nicht.
15.11.2019 14:30 Beiträge des Benutzers | zu Buddylist hinzufügen
MrSparkle MrSparkle ist männlich
myCSharp.de-Team

avatar-2159.gif


Dabei seit: 16.05.2006
Beiträge: 5.299
Herkunft: Leipzig


MrSparkle ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Du brauchst du nur die leeren Werte aus dem Array zu filtern:

C#-Code:
filter.Where(m => !string.IsNullOrEmpty(m))

Oder habe ich was falsch verstanden?
15.11.2019 14:32 Beiträge des Benutzers | zu Buddylist hinzufügen
echdeneth echdeneth ist männlich
myCSharp.de-Mitglied

Dabei seit: 05.06.2019
Beiträge: 49
Entwicklungsumgebung: C# / Visual Studio 2017/19
Herkunft: Sachsen

Themenstarter Thema begonnen von echdeneth

echdeneth ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Zitat von Abt:
Du kannst die gebundene Quelle problemlos mit Linq und entsprechenden Expressions vorfiltern, bevor die gebunden wird.
Dann brauchste diese String-Frickerlei nicht.

Meinst du so:

C#-Code:
            IEnumerable<string> filter1 = from str in f where str != "" || str != null select str;
            var fii = new List<string>();
            foreach (string str in filter1)
            {
                fii.Add(str);
            }
            Ergebnis3.Text = string.Join(" und ", fii);

Namen sind Wurscht, da Code nur zur Übung dient

f ist ein Array mit Werten aus Combos und Textboxen, die strings in diesem Array können/dürfen auch mal null oder leer oder sonstwas sein. Dann müssen die strings raus.

Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von echdeneth am 16.11.2019 14:16.

16.11.2019 14:14 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Abt
myCSharp.de-Team

avatar-4119.png


Dabei seit: 20.07.2008
Beiträge: 13.437
Herkunft: Stuttgart/Stockholm


Abt ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Nein - damit filterst Du immer noch in der UI und nicht wie ich gemeint hab in den Daten/der Quelle.
Aber das würde MrSparkle's Antwort entsprechen.
16.11.2019 14:24 Beiträge des Benutzers | zu Buddylist hinzufügen
echdeneth echdeneth ist männlich
myCSharp.de-Mitglied

Dabei seit: 05.06.2019
Beiträge: 49
Entwicklungsumgebung: C# / Visual Studio 2017/19
Herkunft: Sachsen

Themenstarter Thema begonnen von echdeneth

echdeneth ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Zitat von MrSparkle:
Du brauchst du nur die leeren Werte aus dem Array zu filtern:

C#-Code:
filter.Where(m => !string.IsNullOrEmpty(m))

Oder habe ich was falsch verstanden?

Nein, funktioniert nicht - nichts was ich versuche funktioniert verwundert

C#-Code:
            string[] f = { _c1, _c2, Tb_01.Text, Tb_02.Text, Tb_03.Text, _schalter };
            f.Where(m => !string.IsNullOrEmpty(m));
            l01.Content = string.Join(" und ", f);
16.11.2019 15:12 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
MrSparkle MrSparkle ist männlich
myCSharp.de-Team

avatar-2159.gif


Dabei seit: 16.05.2006
Beiträge: 5.299
Herkunft: Leipzig


MrSparkle ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Du solltest natürlich auch das Ergebnis der Where-Methode verwenden.

Schau dir im Debugger an, was dein Code macht:  [Artikel] Debugger: Wie verwende ich den von Visual Studio?
16.11.2019 15:15 Beiträge des Benutzers | zu Buddylist hinzufügen
echdeneth echdeneth ist männlich
myCSharp.de-Mitglied

Dabei seit: 05.06.2019
Beiträge: 49
Entwicklungsumgebung: C# / Visual Studio 2017/19
Herkunft: Sachsen

Themenstarter Thema begonnen von echdeneth

echdeneth ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Habe es hinbekommen, Danke

C#-Code:
            var fff = f.Where(m => !string.IsNullOrEmpty(m));

            l01.Content = string.Join(" und ", fff);

Ich dachte es sei irgendwas komplizierteres..., es war eher noch einfacher XD
17.11.2019 11:56 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
T-Virus T-Virus ist männlich
myCSharp.de-Mitglied

Dabei seit: 17.04.2008
Beiträge: 1.396
Entwicklungsumgebung: Visual Studio, Codeblocks, Edi
Herkunft: Nordhausen, Nörten-Hardenberg


T-Virus ist offline Füge T-Virus Deiner Kontaktliste hinzu

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

An den Bezeichnungen solltest du noch arbeiten ;)
Falls du später mal viele Filter hast, sollten diese auch klare Namen haben andene sich der Sinn ableiten lässt.

Oder alternativ spar die das zwischenspeichern in Variablen und gibt diese gleich an die String.Join Funktion.

T-Virus
17.11.2019 21:09 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Baumstruktur | Brettstruktur       | Top 
myCSharp.de | Forum Der Startbeitrag ist älter als 3 Monate.
Der letzte Beitrag ist älter als 3 Monate.
Antwort erstellen


© Copyright 2003-2020 myCSharp.de-Team | Impressum | Datenschutz | Alle Rechte vorbehalten. | Dieses Portal verwendet zum korrekten Betrieb Cookies. 18.02.2020 08:25