J'ai une méthode:L'utilisation d'une expression lambda transmise à une méthode ralentit-elle une requête Entity Framework?
public static void GetObjects()
{
using(MyContext context = new MyContext())
{
var objects = context.Bars.Where(b => b.Prop1 != null)
.Select(b => new MyObject{Prop = b.Prop1, Name = b.Name})
.ToList();
foreach(var object in objects)
{
// do something with the object
}
}
}
Je remaniée avec la méthode pour la rendre plus générale pour que je puisse passer dans un Func
afin que je puisse préciser la déclaration where
et quels sont les biens de la table Bars
est attribué, à MyObject.Prop
comme ceci:
public static void GetObjectsV2(Func<Bar, bool> whereFunc, Func<Bar, string> selectPropFunc)
{
using(MyContext context = new MyContext())
{
var objects = context.Bars.Where(whereFunc)
.Select(b => new MyObject{Prop = selectPropFunc(b), Name = b.Name})
.ToList();
foreach(var object in objects)
{
// do something with the object
}
}
}
GetObjectsV2
semble fonctionner beaucoup plus lent que GetObjects
. Y a-t-il des raisons pour lesquelles cela affecterait la performance, et si oui, y a-t-il des moyens de contourner cela tout en gardant la fonction flexible?
Merci beaucoup pour la réponse rapide! – aubreyrhodes