Quelqu'un bâton à toutes les règles (ou vous êtes forcé de s'en tenir à toutes les règles par votre employeur?) lors du choix d'utiliser LINQ la syntaxe de la requête ou d'une expression Lambda à l'intérieur de l'un des LINQ méthodes d'extension? Cela s'applique à toutes les Entités, SQL, d'objets, de quoi que ce soit.
Sur notre lieu de travail, mon patron n'aime pas lambda, et il avait à utiliser la syntaxe de la requête pour rien, qui, dans certains cas, que je trouve sont de moins en moins lisible.
var names = collection.Select(item => item.Name);
var names = from item in collection
select item.Name;
Peut-être que lors de l'ajout d'une condition, le Lambda je trouve est un peu en désordre, où l'
var names = collection.Where(item => item.Name == "Fred")
.Select(item => item.Name);
var names = from item in collection
where item.Name == "Fred"
select item.Name;
Vient de sortir d'intérêt: comment le compilateur de traiter celui-ci? Personne ne sait comment le au-dessus d'une requête LINQ de compiler en lambda? Sera l' Name
bien être appelée pour chaque élément? Pourrions-nous faire de ce lieu et potentiellement améliorer la performance? Serait-ce à dire lambda est légèrement plus contrôlable en termes de performance?
var names = collection.Select(item => item.Name)
.Where(name => name == "Fred");
Certes, lorsque nous commençons à utiliser de plus en plus et les expressions, le lambda devient bordélique et j'aimerais commencer à utiliser la syntaxe de la requête ici.
var names = collection.Where(item => item.Name == "Fred")
.OrderBy(item => item.Age)
.Select(item => item.Name);
var names = from item in collection
where item.Name == "Fred"
order by item.Age
select item.Name;
Il y a aussi quelques choses que je trouve ne peut être fait avec la syntaxe de la requête. Certains d'entre eux vous pourriez penser que ce serait vraiment simple (en particulier les fonctions d'agrégation), mais non, vous devez ajouter l'un de l'extension LINQ méthodes pour la fin, qui l'omi, de l'apparence plus soignée avec une expression lambda.
var names = collection.Count(item => item.Name == "Fred");
var names = (from item in collection
where item.Name == "Fred"
select item).Count()
Même pour certains le simple lambda chaînes, ReSharper est suggère que je les convertir en LINQ des requêtes sur.
Quelqu'un peut-il autre chose à ajouter à cela? Quelqu'un aurait-il de leur propre peu de règles ou ne leur entreprise suggèrent/forcer l'utilisation d'une seule?