我正在编写类似于以下内容的LINQ查询:
var test = from o in dbcontext.Orders.AsEnumerable()
where o.ID==1
select new Order
{
Name = GetName(o.ID)
};
为了在LINQ查询中调用外部函数,我在查询中使用AsEnumerable()
。
我理解通常在调用ToList()
之类的枚举函数之前不会执行查询。但在这里,我在查询中调用枚举。
有人能告诉我,使用这样的AsEnumerable()
被认为是不好的做法吗?与创建查询后调用ToList()
相比,它会在性能上受损吗?
答案 0 :(得分:5)
我会做
var ids = from o in dbcontext.Orders
where o.ID==1
select new { ID = o.ID };
var names = from i in ids.AsEnumerable()
select new Order { Name = GetName(i.ID) };
即。在数据库中尽可能多地进行查询,然后只在C#中执行ID到名称的转换。