LINQ'AsEnumerable'和实体框架

gun*_*erz 4 c# linq performance entity-framework

我正在编写类似于以下内容的LINQ查询:

var test = from o in dbcontext.Orders.AsEnumerable()
        where o.ID==1
        select new Order
        { 
             Name = GetName(o.ID)
        };
Run Code Online (Sandbox Code Playgroud)

为了在LINQ查询中调用外部函数,我AsEnumerable()在查询中使用.

我理解通常在ToList()调用枚举函数之前不会执行查询.但在这里,我呼吁枚举查询.

任何人都可以告诉我,这样使用是否被认为是不好的做法AsEnumerable()?与创建查询ToList() 调用相比,它会在性能上受损吗?

Raw*_*ing 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) };
Run Code Online (Sandbox Code Playgroud)

即在数据库中尽可能多地进行查询,然后只在C#中执行ID到名称的转换.