Autor Beitrag
Kryox
Hält's aus hier
Beiträge: 12



BeitragVerfasst: Fr 07.12.12 00:40 
Hallo,

bin gerade auf das Forum gestoßen und habe auch gleich eine Frage *unverschämt*. Vielleicht weiß ja jemand Rat und kann mir dabei helfen.

Ich habe zwei foreach schleifen die mir unterschiedliche Daten bringen.

Beispiel:
foreach 1: Name, Telefonnummer, Ort, PLZ
foreach 2: Name, Nachname, Adresse, Land

(in Wirklichkeit sind das andere Daten die sich leider nur aus zwei separaten Datenbanken auslesen lassen)

Ich will jetzt meine ListView füllen. Angenommen ich habe folgende Spalten:

Name / Nachname / Telefonnummer / Ort / PLZ / Adresse / Land

Frage:
Wie kann ich das nun bewerkstelligen, dass ich anhand einer Abfrage prüfe, ob der Name beiden Schleifen vorkommt und falls JA die Daten "kombiniert" in meine listview schreibt. Ich hoffe ihr versteht was ich meine.

Es soll also vom Max Müller die Telefonnummer und der Nachname in der selben listview line/row stehen.

Ich würde mich sehr über ein kurzes codebeispiel freuen.

Bedanke mich schon mal vorab und wünsche noch einen angenehmen Abend!

Moderiert von user profile iconTh69: Titel geändert: Rechtschreibfehler beseitigt
mats74
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 189
Erhaltene Danke: 26

Win 10
VS 2017/19, C++, C#
BeitragVerfasst: Fr 07.12.12 08:49 
Hallo Kryox :welcome:

Du kannst während der ersten Schleife die zweite Schleife durchlaufen und die Werte entsprechend prüfen.
Ist der Wert übereinstimmend, schreibst Du dir die Werte in das Listview.

Folgedner Code sollte deine Aufgabe lösen:
ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
// Meine Variablen
string wert1;
string wert2;
etc.

// Listview Eintrag erstellen
// Erste Schleife durchlaufen
foreach (Etwas1 in Irgendetwas1)
{
    // Zweite Schleife durchlaufen
    foreach (Etwas2 in Irgendetwas2)
    {
        if (Etwas1.... == Etwas2....)
        {
            // Variablenwerte zusammenbasteln
            wert1 = Etwas1.....;
            wert2 = Etwas2.....;
            etc.

            // Listview Eintrag mit den Variablenwerten erstellen
            ....

            // Zweite Schleife verlassen und nächsten Eintrag prüfen
            break;
        }
    }
}

Die Variablenwerte brauchst Du nicht unbedingt.
Du kannst direkt von den Objekten aus den Schleifen die Werte für den Listvieweintrag erzeugen.
Ich hoffe, dies hilft Dir weiter.

_________________
Gruss
mats74
Ralf Jansen
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 4708
Erhaltene Danke: 991


VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
BeitragVerfasst: Fr 07.12.12 11:23 
Du solltest die beiden foreach's eigentlich durch einen LINQ join auf den Namen der beiden Listen ersetzen können. Dann hast du eine flache Darstellung der Daten die du sauber weiterverarbeiten kannst.
Falls die Daten auch geändert werden sollen wäre es hilfreich eine echte Klasse dafür vorzusehen und nicht wie im folgenden Beispiel einfach einen anonymen Typen.

ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
var query = from a in Liste1
            join b in Liste2 on a.Name equals b.Name 
            select new { a.Name, 
                         b.Nachname,
                         a.Telefonnummer,
                         a.Ort,
                         a.PLZ,
                         b.Adresse,
                         b.Land };
Kryox Threadstarter
Hält's aus hier
Beiträge: 12



BeitragVerfasst: Fr 07.12.12 15:39 
Wow, vielen vielen Dank! Ich werde es umgehend testen und berichten.

ich benutze fw 3.5 daher leider kein linq möglich.
Th69
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Moderator
Beiträge: 4807
Erhaltene Danke: 1061

Win10
C#, C++ (VS 2017/19/22)
BeitragVerfasst: Fr 07.12.12 16:52 
Hallo Kryox,

Linq gibt es seit C# 3.0 (VS 2008): C# 3.0-Features zur Unterstützung von LINQ
Das verwendete Framework ist dabei egal (d.h. funktioniert auch mit .NET 3.x Projekten, und sogar mit .NET 2.0 Projekten wenn man die Linq-Extension LinqBridge dafür benutzt).
Kryox Threadstarter
Hält's aus hier
Beiträge: 12



BeitragVerfasst: Fr 14.12.12 06:57 
Nach dem einlesen in linq und etwas probieren nun genau so geschafft wie ich ew brauche, vielen Dank für die Ratschläge.

Top Forum!