Laden...

Array mit sich selbst vergleichen

Erstellt von C# N00B vor 17 Jahren Letzter Beitrag vor 17 Jahren 1.543 Views
C
C# N00B Themenstarter:in
128 Beiträge seit 2005
vor 17 Jahren
Array mit sich selbst vergleichen

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!

2.921 Beiträge seit 2005
vor 17 Jahren

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.

C
C# N00B Themenstarter:in
128 Beiträge seit 2005
vor 17 Jahren

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

Danke.

Gruß Steffen

Lieber heimlich schlau, als unheimlich dumm!

V
52 Beiträge seit 2006
vor 17 Jahren
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!");
   }
}
C
C# N00B Themenstarter:in
128 Beiträge seit 2005
vor 17 Jahren

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!