juin
2007
J’avais récemment blogué sur le fait que Jomo Fisher avait réimplémenté le Design Pattern Visitor avec LINQ. Il remet ça ! Je trouve que c’est vraiment un très bon exemple d’utilisation de C#3.0.
juin
2007
La classe DataReader n’implémente pas l’interface IEnumerable. Du coup pas de requête LINQ. Je viens de trouver un post qui a fait ceci avec deux Extension Methods que je ne manquerai pas d’inclure dans mon projet codeplex : http://www.codeplex.com/ExtensionMethods.
juin
2007
Charlie Calvert vient de référencer toutes une série d’extension de LINQ plus plusieurs articles sur C#. Pour rappel, Microsoft fournit des « providers » LINQ pour les objets, SQL Server, les DataSet, les fichiers XML. Vous pouvez cependant relativement facilement créer votre propre provider. J’avais d’ailleurs déjà référencé l’excellent travail de Bart de Smet : LINQ To LDAP.
juin
2007
La syntaxe d’un join en LINQ est : from e1 in enumerable1 join e2 in enumerable2 on e1.X equal e2.X select new {e1.X, e1.Y, e1.A, e2.B} Je voulais faire un join sur e1.X equal e2.X et e1.Y equal e2.Y. Je pensais pouvoir utiliser un && comme dans un where mais ça ne marche pas. On ne peut mettre qu’une seule condition à un join. Anders Hejlsberg m’a donné la solution : passer par un anonymous […]
juin
2007
Avec Linq, une nouvelle interface est venu se greffer accompagnant INotifyPropertyChanged : INotifyPropertyChanging. Tout comme sa grande soeur (qui était là depuis .NET 2.0) elle ne comporte qu’un évènement : PropertyChanging. Bien souvent, les évènements en « ing » prennent des CancelEventArgs. Pas celui-là. Il a la même signature que PropertyChanged : public interface INotifyPropertyChanging { event PropertyChangedEventHandler PropertyChanging; }
juin
2007
Imaginons une base SQL Server avec deux tables : une table Worker et une table Company. Quand vous ajoutez un fichier de type LINQ to SQL File à votre projet et que vous rajoutez dedans les deux tables, vous avez une classe qui hérite de System.Data.Linq.DataContext ainsi qu’une classe Worker et une classe Company. Votre classe qui hérite de System.Data.Linq.DataContext a deux propriétés : Workers et Companies. Comme vous pouvez le remarquer, ces noms sont […]
juin
2007
Lorsqu’on rajoute un ADO .NET Entity Data Model dans un projet, on obtient 4 fichiers : un .csdl qui représente vos entities, un fichier .cs (sous le fichier .csdl), un fichier .msl qui correspond au mapping entre la base et les entities et un fichier .ssdl qui représente la base. Les 3 fichiers (autre que le cs) sont fichiers de type xml. Dans le premier et le dernier fichier, le root node est Schema et […]
juin
2007
Dans une requête LINQ To XML, si le fichier XML contient un namespace, vous devez le préciser dans votre requête (merci à Steve Eichert pour l’info). Pour récupérer la liste des fichiers .cs d’un projet, il suffit de faire : XNamespace ns = XDocument.Load(csprojFile).Root.Attribute("xmlns").Value as string; var csFiles = from c in XElement.Load(csprojFile).Elements(ns + "ItemGroup").Elements(ns + "Compile") where ((string)c.Attribute("Include")).EndsWith(".cs") select […]
juin
2007
Pascal Belaud vient de mettre en ligne un webcast intitulé Introduction à LINQ, DLINQ et XLINQ avec Visual Basic 9.0 disponible ici.