{the magic lies between the brackets}

Tag: 15. Januar 2013 (Seite 1 von 1)

[C#/.NET] – Listen nach einem bestimmten Eintrag durchsuchen

Oft möchte man den Index eines Eintrags oder den Eintrag in einer Liste finden.

 List<MyItemClass> myList = new List<MyItemClass>(); 

Bis vor kurzem tat ich das noch über eine for-schleife, welche durch die Liste läuft und einer if-Abfrage mit der abgefragt wird, ob der Wert gleich ist.
Dies war bei kleinen Listen auch kein Problem, jedoch steigt die benötigte Zeit überproportional zur Anzahl an Einträgen, sodass ich die Abfrage ändern musste.

Die Lösung meines Problems war:

        
       int mySearchedIndex = myList.FindIndex(
                delegate(MyItemClass myitem)
                { 
                return myitem.Value.ToString().Equals(myValue.ToString(), StringComparison.Ordinal); 
                });
       

Hier wird ein Delegate gebraucht, um eine anonyme Methode zu nutzen.
Diese anonyme Methode vergleicht den myitem.Value Wert (als String) mit dem myValue Wert (auch String).
Dieser Code funktioniert in C# 2.0.
Ab .NET 3.5 (C# 3.0) kann man für solche Operationen LINQ oder Lambda-Expressions nutzen.

Beispiel mit Lambda-Expressions:

 
MyItemClass myItem = myList.Where<MyItemClass>( item => return item.Value == myValue; ).Single<MyItemClass>();
int index = myList.IndexOf(myItem);

So hat man hier entweder den gesuchten Index oder direkt das gesuchte Objekt.

RAID Array degraded – Vorgehensweise zur Wiederherstellung

Sollte es zu einem Ausfall eines RAID Arrays kommen, kann man unter Umständen durch ein Software-RAID wieder auf die Daten zugreifen.
Dazu gibt es für das Betriebssystem Linux das Programm mdadm.

Dieses installieren wir über das Terminal mit dem Befehl

Zitat:

sudo get-apt install mdadm

Bei der Installation wird man ebenfalls gefragt, ob man Postfix installieren möchte.
Wählt hier die Standardeinstellung.

Nachdem das Programm installiert wurde, begeben wir uns erneut in das Terminal.
Von dort aus geben wir folgendes ein:

Code:

sudo mdadm --assemble --scan
sudo mdadm --assemble --run /dev/md0 /dev/sdg

Nun sollte man das Volume mounten können, dies geschieht entweder per „Disk Utility“(unter Linux Mint) oder ebenfalls per Terminal mit folgenden Befehlen:

Code:

sudo mkdir /media/raiddisk
sudo chmod 777 /media/raiddisk
sudo mount /dev/md0 /media/raiddisk

Nun solltet ihr wieder auf die Dateien zugreifen können

[ratings]