Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
Arrays vergleichen und Unterschiedliche Werte ausgeben
Kjell
myCSharp.de - Member



Dabei seit:
Beiträge: 7

Themenstarter:

Arrays vergleichen und Unterschiedliche Werte ausgeben

beantworten | zitieren | melden

Hallo,

ich würde gerne in C# zwei Arrays vergleichen und die Unterschiedlichen Einträge ausgeben lassen.

z.B:
Array 1:
Software 1
Software 2
Software 3

Array 2:
Software 1
Software 3

Ausgabe:
Software 2


Leider komme ich in der Umsetzung nicht weiter und benötige Hilfe.

Danke
private Nachricht | Beiträge des Benutzers
T-Virus
myCSharp.de - Experte



Dabei seit:
Beiträge: 2.064
Herkunft: Nordhausen, Nörten-Hardenberg

beantworten | zitieren | melden

Wie sieht den dein aktueller Ansatz aus?
Der einfachste Ansatz wäre durchlaufen der Arrays und prüfen ob die jeweiligen Werte identisch sind.
Dafür brauchst du nur eine for Schleife.

Hierbei musst du aber beachten, dass die Arrays gleich groß sein müssen.
Wenn diese unterschiedlich groß sind, musst du dies noch beachten!

T-Virus
Developer, Developer, Developer, Developer....

99 little bugs in the code, 99 little bugs. Take one down, patch it around, 117 little bugs in the code.
private Nachricht | Beiträge des Benutzers
Kjell
myCSharp.de - Member



Dabei seit:
Beiträge: 7

Themenstarter:

beantworten | zitieren | melden

Ich poste hier mal den ganzen Code(Einige Werte musste ich ändern aber das Prinzip bleibt gleich):


using System;
using System.IO;
using System.Threading;
using static System.Net.Mime.MediaTypeNames;
using static System.Net.WebRequestMethods;

namespace Softwarefilter
{
    class Program
    {
        static void Main(string[] args)
        {
            StreamReader sr = new StreamReader("file.csv");

            char trennzeichen = ',';
            string[] software;
            string zeile;
            string[] defaultsoftware = new string[] {  
            "Software1",
            "Software2",
            "Software3",
            "Software4",
            "Software5",
            "Software6",
            "Software7",
            "Software8",
            "Software9",
            "Software10"
            };

            try
            {
                Console.WriteLine("Softwarezuweisung");
                Console.WriteLine("-----------------");

                while (!sr.EndOfStream)
                {
                    // Zeilenweise
                    zeile = sr.ReadLine();
                    software = zeile.Split(trennzeichen);

                    
                    for (int i = 0; i < software.Length; i++)
                    {
                        for (int j = 0; j < software.Length; j++)
                        {
                            if (j == 1)
                                Console.WriteLine(software[i]);
                        }                        
                    }                    
                }
            }    
            catch(Exception e) 
            {
                Console.WriteLine(e.Message);
            }
            finally 
            {
                if (sr != null)
                {
                    sr.Close();
                }
            }

            Console.ReadKey();
        }
            

            
    }
}

Hier möchte ich noch das Array software mit defaultsoftware vergleichen und die Unterschiedliche Software ausgeben.
private Nachricht | Beiträge des Benutzers
Abt
myCSharp.de - Team

Avatar #avatar-4119.png


Dabei seit:
Beiträge: 16.183

beantworten | zitieren | melden

Solche Basisfragen werden eigentlich in den Grundlagen von C# erklärt ;-)
Daher kann man sowas auch mit sehr einfachen Google Suchbegriffen erklärt bekommen: Google Suche nach "compare two string arrays c#"

In .NET gibt es für Dein Vorhaben fertige Methoden. Dazu einfach einen Blick in die Doku werfen.
Enumerable.Except Method (System.Linq)

Und aufgrund Deines Code-Vorgehens empfehle ich Dir vorsichtshalber auch das hier:
Reference types - C# Reference
private Nachricht | Beiträge des Benutzers
Kjell
myCSharp.de - Member



Dabei seit:
Beiträge: 7

Themenstarter:

beantworten | zitieren | melden

Hallo,

ich habe mir die Links angeschaut und durchgelesen. Wirklich gut erklärt ist das meiner Meinung nach nicht.

Ich habe nun schon verschiedene Zusammensetzungen des Befehls getestet, aber leider ist die Ausgabe nie 100% richtig. Außerdem ist mir nicht ganz klar an welcher Stelle ich den Code am besten einbaue.

Ich würde mich über weitere Hilfe freuen
private Nachricht | Beiträge des Benutzers
Alf Ator
myCSharp.de - Member



Dabei seit:
Beiträge: 679

beantworten | zitieren | melden

Hallo Kjell

Erstmal wäre es sinnvoll dein Problem auf das wesentliche zu reduzieren:
(Ich habe bei dem Beispiel mal List<T> genommen, statt string-Arrays)


        static void Main(string[] args)
        {
            var list1 = new List<string>
            {
                "Software 1",
                "Software 2",
                "Software 3"
            };

            var list2 = new List<string>
            {
                "Software 1",
                "Software 3"
            };

            var differences = GetDifferences(list1, list2);

            Console.ReadKey();
        }
            
        private IEnumerable<string> GetDifferences(List<string> list1, List<string> list2)
        {
            // hier Listen vergleichen
            return new List<string>();
        }

Das ganze könntest du auch ganz hervorragend mit UnitTests machen:
C# unit test tutorial - Visual Studio (Windows)

Zum Listenvergleich kannst du Linq verwenden:
Language-Integrated Query (LINQ) (C#)

Es ist aber auch eine gute Übung, so einen Listenvergleich händisch umzusetzten. Wenn deine UnitTests funktionieren kannst du das gut machen und deine eigene Implementierung damit testen.

Zum Arbeiten mit csv-Dateien empfehle ich eine vorhandene Lösung zu verwenden, zum Beispiel:
https://www.nuget.org/packages/CsvHelper/

Beim programmieren gilt: aller Anfang ist schwer. Man muss viel Lesen, ausprobieren und verstehen. Aber immer wenn man dann einen Schritt weiterkommt und etwas verstanden und gelernt hat, macht es riesenspaß.

Viele Grüße
Alf
private Nachricht | Beiträge des Benutzers