4

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

4

1 回答 1

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

于 2012-08-15T10:55:58.470 回答