相关疑难解决方法(0)

.ToList(),. AsEnumerable(),AsQueryable()之间的区别是什么?

我知道LINQ to Entities和LINQ to Objects的一些区别,第一个实现IQueryable和第二个实现IEnumerable,我的问题范围在EF 5中.

我的问题是这3种方法的技术差异是什么?我看到,在许多情况下,所有这些都有效.我也看到使用它们的组合.ToList().AsQueryable().

  1. 这些方法究竟意味着什么?

  2. 是否有任何性能问题或某些因素会导致使用另一个?

  3. 例如,为什么会使用?.ToList().AsQueryable()而不是.AsQueryable()

linq-to-entities entity-framework entity-framework-4 entity-framework-5

166
推荐指数
3
解决办法
6万
查看次数

我误解了LINQ to SQL .AsEnumerable()?

考虑以下代码:

var query = db.Table
              .Where(t => SomeCondition(t))
              .AsEnumerable();

int recordCount = query.Count();
int totalSomeNumber = query.Sum();
decimal average = query.Average();
Run Code Online (Sandbox Code Playgroud)

假设query需要很长时间才能运行.我需要获得记录数,总数SomeNumber已经返回,并在结束时取平均值.我以为根据我读的是.AsEnumerable()将执行使用LINQ到SQL,然后使用LINQ到对象的查询Count,Sum以及Average.相反,当我在LINQPad中执行此操作时,我看到相同的查询运行三次.如果我更换.AsEnumerable().ToList(),它只被查询一次.

我错过了什么AsEnumerable/做什么?

.net c# linq linq-to-sql

49
推荐指数
3
解决办法
1万
查看次数