У меня есть метод:
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
}
}
}
Я реорганизовал метод, чтобы сделать его более общим, чтобы я мог передать Func
, чтобы я мог указать оператор where
и какое свойство из таблицы Bars
будет присвоено MyObject.Prop
следующим образом:
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
, кажется, работает намного медленнее, чем GetObjects
. Существуют ли какие-либо причины, которые могут повлиять на производительность, и если да, то есть ли способы обойти это, сохраняя при этом гибкость функции?