У меня есть метод:
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
. Есть ли какие-либо причины, по которым это может повлиять на производительность, и если да, то есть ли какие-нибудь способы обойти это, сохранив при этом гибкость функции?