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
Array mit sich selbst vergleichen
C# N00B
myCSharp.de - Member



Dabei seit:
Beiträge: 128

Themenstarter:

Array mit sich selbst vergleichen

beantworten | zitieren | melden

Moin,

wie kann ich ein array mit sich selbst vergleichen ob evtl ein doppelten wert enthalten ist, ohne das ich die werte des gleichen Indexes vergleiche?


i = 0;
            foreach (string Length in arrayLength)
            {
                if (Length == arrayLength[i])
                {
                    dataGridView.Rows.Add();
                    oRows[j].Cells[0].Value = arrayDirectory[i];
                    oRows[j].Cells[1].Value = arrayFileName[i];
                    oRows[j].Cells[2].Value = arrayLength[i];
                    j++;
                }
                i++;
            }

Danke für eure Hilfe.

Gruß Steffen
Lieber heimlich schlau, als unheimlich dumm!
private Nachricht | Beiträge des Benutzers
dr4g0n76
myCSharp.de - Experte

Avatar #avatar-1768.jpg


Dabei seit:
Beiträge: 2.908
Herkunft: Deutschland

beantworten | zitieren | melden

Es gibt mehrere Möglichkeiten, falls Du ein Sortierkriterium hast, sortier die Liste.

Ansonsten z.B. 2 verschachtelte Schleifen mit Laufvariablen i und j und überprüfe
ob i != j.
Seit der Erkenntnis, dass der Mensch eine Nachricht ist, erweist sich seine körperliche Existenzform als überflüssig.
private Nachricht | Beiträge des Benutzers
C# N00B
myCSharp.de - Member



Dabei seit:
Beiträge: 128

Themenstarter:

beantworten | zitieren | melden

Kannst du mir mal bitte ein bespiel zeigen denn ich packs irgendwie nicht.

Danke.

Gruß Steffen
Lieber heimlich schlau, als unheimlich dumm!
private Nachricht | Beiträge des Benutzers
v1vec
myCSharp.de - Member



Dabei seit:
Beiträge: 52

beantworten | zitieren | melden

for(int i = 0;i<array.length;i++)
{
   for(int j = i+1;j < array.length;j++)
   {
       //hier vergleichen
       if(array[i] == array[j])
          MessageBox.Show("Damn!");
   }
}
private Nachricht | Beiträge des Benutzers
C# N00B
myCSharp.de - Member



Dabei seit:
Beiträge: 128

Themenstarter:

beantworten | zitieren | melden

Also dein Code funktioniert nicht ich hab 3 dateien mit o byte in drei verschiedenen verzeicnissen mit dem gleichen namen und mir werde Dateien die definitiv nicht doppelt sind gelistet.

Hier mein code:


double SizeOfAllFiles = 0;
            string Unit = "Byte";
            int NumberOfFiles = 0;
            List<string> arrayDirectory = new List<string>();
            List<string> arrayFileName = new List<string>();
            List<string> arrayLength = new List<string>();
            int row = 0;

            dataGridView.Rows.Clear();

            dataGridView.ClearSelection();            
            folderBrowserDialog.ShowDialog();

            toolStripStatusLabel.Text = "Suchlauf wurde gestartet. Bitte warten.";
            
            string[] FilesInDir = Directory.GetFiles(folderBrowserDialog.SelectedPath, "*", SearchOption.AllDirectories);
            foreach (string myFile in FilesInDir)
            {
                FileInfo File = new FileInfo(Path.GetFullPath(myFile)); // Extrahiert die Dateiinformationen aus der aktuellen Datei
                arrayDirectory.Add(File.Directory.ToString());
                arrayFileName.Add(File.Name.ToString());
                arrayLength.Add(File.Length.ToString());
                SizeOfAllFiles += File.Length;
                NumberOfFiles++;
            }
            
            DataGridViewRowCollection oRows = dataGridView.Rows;
            for (int i = 0; i < arrayFileName.Count; i++)
            {
                for (int j = i + 1; j < arrayFileName.Count; j++)
                {
                    if (arrayFileName[i] == arrayFileName[j])
                    {
                        dataGridView.Rows.Add();
                        oRows[row].Cells[0].Value = arrayDirectory[j];
                        oRows[row].Cells[1].Value = arrayFileName[j];
                        oRows[row].Cells[2].Value = arrayLength[j];
                        row++;
                    }
                }
            }

            while (SizeOfAllFiles ≥ 1024)
            {
                SizeOfAllFiles = SizeOfAllFiles / 1024;
                if (Unit == "MB")
                    Unit = "GB";
                if (Unit == "KB")
                    Unit = "MB";
                if (Unit == "Byte")
                    Unit = "KB";
            }

            if (Unit == "KB" && SizeOfAllFiles ≤ 10)
                SizeOfAllFiles = Math.Round(SizeOfAllFiles, 2);
            if (Unit == "KB" && SizeOfAllFiles > 10)
                SizeOfAllFiles = Math.Round(SizeOfAllFiles, 1);
            if (Unit == "MB" && SizeOfAllFiles ≤ 10)
                SizeOfAllFiles = Math.Round(SizeOfAllFiles, 2);
            if (Unit == "MB" && SizeOfAllFiles > 10)
                SizeOfAllFiles = Math.Round(SizeOfAllFiles, 1);
            if (Unit == "GB" && SizeOfAllFiles ≤ 10)
                SizeOfAllFiles = Math.Round(SizeOfAllFiles, 2);
            if (Unit == "GB" && SizeOfAllFiles > 10)
                SizeOfAllFiles = Math.Round(SizeOfAllFiles, 1);

            labelNumberOfFolders.Text = "Anzahl der Unterordner: " + Directory.GetDirectories(folderBrowserDialog.SelectedPath, "*", SearchOption.AllDirectories).Length.ToString();
            labelNumberOfFiles.Text = "Anzahl der Dateien: " + NumberOfFiles.ToString(); 
            labelSizeOfAllFiles.Text = "Gesamtgröße: " + SizeOfAllFiles.ToString() +  " " + Unit;

            toolStripStatusLabel.Text = "Suchlauf erfolgreich abgeschlossen.";

Danke für eure hilfe.

Gruß Steffen
Lieber heimlich schlau, als unheimlich dumm!
private Nachricht | Beiträge des Benutzers