ASP.NET Deutsch Blogs

Browse by Tags

All Tags » Linq (RSS)
Zweiter Start mit NHibernate
Es ist eine ganze Weile her seit ich mir das letzte Mal NHibernate angeschaut habe. Damals hielt ich NHibernate für zu unflexibel und zu kompliziert, bzw. aufwändig in der Konfiguration. Zumindest damals musste das Mapping der Datenbank auf die einzelnen Objekte in XML-Dateien geschrieben werden. Anschließend wurde per externes Programm, aus den Mapping Klassen generiert, die dann für den Zugriff auf die Datenbank genutzt werden konnten. Gerade die Nutzung eines externen Tools zur Generierung der nötigen Klassen erschien mir sehr umständlich. Vor ein paar Wochen war es wieder so weit, dass ich mir NHibernate angeschaut habe. Der Grund waren ein paar positive Äußerungen in der .NET Community. Dort war immer wieder zu lesen, wie gut NHibernate...
Richtig testen, oder: Was ist schneller… Foreach, LAMBDA Expressions, oder LINQ?
Einleitung Der schweizer Kollege Daniel Schädler hat einen Blogpost mit dem Titel “Was ist schneller… Foreach, LAMBDA Expressions, oder LINQ?” veröffentlicht . Nur schnell eine Korrektur zum Titel, die LINQ-Syntax wird – wie hier schon gezeigt – schlussendlich in die Erweiterungsmethoden-Syntax kompiliert. Ich habe den Titel so übernommen, damit klar ist, dass das eine Antwort auf seinen Post darstellt. Daniel hat sich die Frage gestellt, was wohl schneller ist: Listen per foreach, über LINQ oder die Erweiterungsmethoden Syntax für LINQ filtern. Nun, ich wusste natürlich schon vorher, dass die Resultate nur ganz wenig auseinander liegen dürfen, weil: Wird die LINQ-Syntax in den Erweiterungsmethoden-Syntax übersetzt (Nahezu gleich). Arbeitet...
LINQ: Any, anyone? Range oder Repeat?
Mit LINQ sind unzählige Erweiterungsmethoden für IEnumerable<T> hinzugekommen, die auch ausserhalb von LINQ Abfragen sehr nützlich sein können. Damit ich mir das merke und ihr evt. noch was neues kennenlernt, möchte ich zwei kurz vorstellen: Enumerable.Any() Kommt euch Code wie der folgende bekannt vor? if (addresses.Count > 0) { // … } oder if (addresses.Count == 0) { // … } Das kann jetzt folgendermassen umgeschrieben werden: if (addresses.Any()) { // … } und if (!addresses.Any()) { // … } Die Implementation der Any()-Methode holt sich den Enumerator der Auflistung und versucht den ersten Eintrag zu holen, wenn das klappt gibt sie true zurück, ansonsten false. Wenn Any() true zurückliefert, heisst das also, es ist mindestens ein Element...
Alles var – oder nicht?
Am 13. Oktober 2008 haben Golo Roden und ich unter dem Titel Noch Fragen, Golo? Ja, Bucher! angekündigt, jeweils zum ersten eines jeden Monats einen Kommentar zu einem vorab gemeinsam gewählten Thema verfassen zu wollen. Bisher sind in dieser Reihe folgende Kommentare erschienen: 1. August 2009: C# oder VB: Welche Sprache soll ich lernen? 1. Juli 2009: Primärschlüssel: GUID vs Identity 1. Juni 2009: Heißt die Zukunft RIA? 1. Mai 2009: Woran erkennt man einen guten Entwickler? 1. April 2009: Interfaces vs abstrakte Klassen 1. März 2009: Sinn und Zweck von AOP 1. Februar 2009: Die Forderung nach Softwarequalität 1. Januar 2009: SOA vs WOA 1. Dezember 2008: Dynamic Language Runtime: .NET, quo vadis? Heute, am 1. September 2009, ist es nun wieder...
LINQ to XML: Queries auf XML mit Namespaces
Beim Zugriff auf XML mit bestimmten XML-Namespaces kommt es beim herkömmlichen Queries zu einem Fehler. Wie auch beim XMLDoxument muss beim den Abfragen auf bestimmte Knoten ein Namespace angegeben werden. Ausgangspunkt bei mir ist eine Abfrage per WebDAV auf einen Exchange Server, bei der ich ungefähr folgende Antwort erhalte: <? xml version ="1.0" ?> < a:multistatus xmlns:b ="urn:uuid:c2f41010-65b3-11d1-a29f-00aa00c14882/" xmlns:d ="urn:schemas:httpmail:" xmlns:c ="xml:" xmlns:a ="DAV:" > < a:response > < a:href > http://mdomain/exchange/Account/ </ a:href > < a:propstat > < a:status > HTTP/1.1 200 OK </ a:status > < a:prop > </ a:prop...
Optimierungseinstellung im Reflector, oder: Wie sieht LINQ wirklich aus?
Beim dritten Treffen vom .NET Stammtisch Konstanz - Kreuzlingen habe ich einen Vortrag über LINQ gehalten. Dabei wollte ich zeigen wie aus dem SQL ähnlichen Syntax von LINQ aneinandergereihte Methoden Aufrufe werden und aus den Lambda Ausdrücken jeweils anonyme Methoden. Das geht über den Reflector auch wunderbar. Kurz vor dem Vortrag habe ich den Fehler begangen und Windows 7 installiert… nicht das Windows 7 der Fehler gewesen wäre, sondern die Neuinstallation. So hatte ich vieles noch nicht 100% so wie es war und ausserdem war plötzlich die neuste Version vom Reflector installiert. Als ich während dem Vortrag den Code demonstrieren wollte, bekamen wir natürlich nur wunderschöne Lambda-Ausdrücke zu sehen, keine anonymen Methoden. Ich wusste...
LINQ to XML - Einen XML Knoten aus einem vorhandenem XML Dokument löschen
Der im vorigen Artikel hinzugefügte knoten soll auch wieder entfernt werden können. Folgende paar Zeilen erledigen diese Aufgabe. XDocument xdoc = XDocument.Load( this .XmlFilePath); var xlayouts = from c in xdoc.Elements( "layouts" ).Elements( "layout" ) where c.Attribute( "folder" ).Value == FolderName select c; foreach (var xlayout in xlayouts.ToList()) xlayout.Remove(); xdoc.Save( this .XmlFilePath); Der LINQ Query selektiert alle <layout>-Knoten innerhalb des <layouts>-Knotens, bei denen der Wert des Attributes "folder" dem der übergebenen Variable "FolderName" entspricht. Anschließend gehe ich in der Schleife alle XElement Objekte durch und entferne sie. In der Schleife muss...
LINQ to XML - XML Daten erzeugen und in ein vorhandenes XML Dokument einfügen
Ziel ist es einen vorgegebenen XML Knoten in ein vorhandenes XML Dokument einzufügen. Das XML soll folgendermaßen aussehen: < layout folder ="MyFolder" startPage ="Home" name ="HomePage" > < displaynames > < displayname language ="de-DE" value ="Startseite" /> < displayname language ="en-US" value ="Home page" /> < displayname language ="fr-FR" value ="page d'accueil" /> </ displaynames > </ layout > Nach einem kurzen Blick in die MSDN war das Prinzip um so ein XML zu erstellen relativ klar. Anhand eines selbstdefinierten Layout-Objektes ("NewLayout"), kann ich das XML wie folgt zusammenbauen. XElement...
"WHERE IN" - Abfrage mit LINQ to SQL
Nach etwas probieren hatte ich dann heraus, wie ich mit LINQ to SQL einen "WHERE IN" - Abfrage bekommen: List< string > tmpList = new List< string >(); foreach (Group group in user.Groups) { tmpList.Add(Group.ShortName.Replace( "'" , "''" )); } string [] tmpArr = tmpList.ToArray< string >(); var calendars = from cal in db.Calendars where (tmpArr.Contains(cal.OWNER) select cal; Die Contains-Abfrage in der WHERE Bedingung erzeugt eine "WHERE IN"- Abfrage in dem Stil ([t0].[OWNER] IN (@p1, @p2, @p3, @p4)) Ganz einfach... Man muss es nur wissen... Bzw. jemand sollte es mal dokumentiert haben ;-) Read More...
Free Visual Studio 2008 and .NET Framework 3.5 Training Kit
The Visual Studio 2008 and .NET Framework 3.5 Training Kit includes presentations, hands-on labs, and demos. This content is designed to help you learn how to utilize the Visual Studio 2008 features and a variety of framework technologies including: LINQ, C# 3.0, Visual Basic 9, WCF, WF, WPF, ASP.NET AJAX, VSTO, CardSpace, SilverLight, Mobile and Application Lifecycle Management. Cheers    Daniel Read More...
More Posts Next page »