LINQ'AsEnumerable'和实体框架

时间:2012-08-15 10:52:11

标签: c# performance entity-framework linq

我正在编写类似于以下内容的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() 相比,它会在性能上受损吗?

1 个答案:

答案 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到名称的转换。