
Dienstag, Juli 31, 2007
Neues Eisen

Montag, Juli 30, 2007
Im Westen geht die Sonne unter
LINQ: Csv To Xml
Wie kann man eigentlich mit LINQ schnell mal den Inhalt einer CSV-Datei in eine XML-Datei transferieren.
Wie nachstehende Abbildung zeigt, ist dies nicht so schwierig! Jedoch muss man ein wenig überlegen, wie man bei dem Select-Kommandos die erste Zeile überliest.
Als Lösung habe ich hier eine Outer-Variable gewählt, die - wie bei einer Outer-Variablen üblich - außerhalb des LINQ-Statements (bzw. einer Lambda-Expression = anonymen Methode) deklariert und mit 0 initialisert wird (int lineCounter = 0;). Mit einer Where-Klausel wird dann innerhalb des Statements geprüft ob lineCounter++ > 0 ist und schon wird die erste Zeile übersprungen.

Samstag, Juli 28, 2007
iPhone in meinen Händen

Orcas Beta II
Nur noch kanpp 30 Minuten bis zum Ende des Downloads der Orcas Beta II. Ich habe mich, weil ich z.Z. auch mit dem VS Team System 2005 arbeite für dessen Nachfolger entschieden.
Es wird sicherlich recht interessant herauszufinden, welche Features sich im TS verbessert haben bzw. neu hinzugekommen sind nachdem ich schon viele Schritte mit der Beta 1 von Orcas gemacht habe.
Einen guten Einstieg in die einfache Installation der Beta II von Orcas bietet Scott Hanselman.

Labels:
.NET 3.5,
Orcas,
Visual Studio
Donnerstag, Juli 26, 2007
Tool zur Optimierung der Freizeit
Jedem .NET-Programmierer, der seine (Frei-)Zeit gerne auf dem Sofa vorm Fernseher, der Stereoanlage oder Spielkonsole verbringt und für die Qualität der notwendigen Geräte ordentlich investiert hat, empfehle ich das Visual Studio Add-In ReSharper.
Zugegeben dieses Tool ist nicht kostenfrei. Jedoch weit preiswerter als die meiste Unterhaltungselektronik. Und durch den sinnvollen Einsatz dieses Tools kann leicht mehr Zeit für die Freizeit unter dem Strich herausspringen.
LINQ Where mit .NET 2.0
Mit LINQ ist es ab der kommenden Version 3.5 des .NET Frameworks möglich eine einheitliche Abfragesprache für alle IEnumerables zu verwenden. Diese Query Language ähnelt dem bekannten SQL und enthält auch ein Where-Kommando, um aus einer Collection alle die Elemente auszuwählen, die einer Bedingung entsprechen.
Ein solches Where-Kommando ist auch leicht mit Hilfe von Generics und anonymen Methoden (C#) ab .NET 2.0 zu erstellen. Mittels des folgenden Code-Schnipsels wird die Liste customerList mittels einer anonymen Methode auf Elemente überprüft, deren Eigenschaft Surname mit der Zeichenkette „Muster“ beginnt.
IEnumerable<Customer> names =
EnumerableEnhancement.Where(customerList,
delegate(Customer c)
{
return c.Surname.StartsWith("Muster");
});
Die Methode selbst kann wie folgt implementiert werden:
public static IEnumerable<T> Where<T>(IEnumerable<T> items, Predicate<T> predicate)
{
List<T> list = new List<T>();
IEnumerator<T> enumerator = items.GetEnumerator();
while (enumerator.MoveNext())
{
if (predicate(enumerator.Current))
list.Add(enumerator.Current);
}
return list;
}
Der als Parameter verwendete Delegate Predicate<T> ist als delegate bool Predicate<T> (T obj) in System deklariert. Die Implementierung dieses Delegates definiert einen Satz von Kriterien und bestimmt, ob das übergebene Objekt jene Kriterien erfüllt.
Falls die Kriterien erfüllt sind wird das Objekt der Liste, die zurückgegeben wird, hinzugefügt.
IEnumerable<Customer> names =
EnumerableEnhancement.Where(customerList,
delegate(Customer c)
{
return c.Surname.StartsWith("Muster");
});
public static IEnumerable<T> Where<T>(IEnumerable<T> items, Predicate<T> predicate)
{
List<T> list = new List<T>();
IEnumerator<T> enumerator = items.GetEnumerator();
while (enumerator.MoveNext())
{
if (predicate(enumerator.Current))
list.Add(enumerator.Current);
}
return list;
}
Beutzer von VB.NET können dies beinah auch so machen. Jedoch gibt es bei VB.NET keine anonymen Methoden. Aus diesem Grund dürfen VB.NET eine extra Methode implementieren, die der Signatur des Delegates Predicate<T> entspricht. Ob dies in VB.NET wirklich so sinnvoll ist, bezweifele ich, da mittels einer Anonymer Methoden wie in C# mehr Möglichkeiten zur Verfügung stehen.
Abonnieren
Posts (Atom)