我知道LINQ to Entities和LINQ to Objects的一些区别,第一个实现IQueryable和第二个实现IEnumerable,我的问题范围在EF 5中.
我的问题是这3种方法的技术差异是什么?我看到,在许多情况下,所有这些都有效.我也看到使用它们的组合.ToList().AsQueryable().
这些方法究竟意味着什么?
是否有任何性能问题或某些因素会导致使用另一个?
例如,为什么会使用?.ToList().AsQueryable()而不是.AsQueryable()?
linq-to-entities entity-framework entity-framework-4 entity-framework-5
这是相当长一段时间,我一直在试图了解背后的想法IEnumerable和IEnumerator.我阅读了网上可以找到的所有问题和答案,特别是StackOverflow,但我并不满意.我明白了我应该如何使用这些接口,但不是为什么这样使用它们.
我认为我误解的本质是我们需要两个接口进行一次操作.我意识到,如果两者都需要,可能还不够.所以我采用了"硬编码"等价物foreach(正如我在这里找到的):
while (enumerator.MoveNext())
{
object item = enumerator.Current;
// logic
}
Run Code Online (Sandbox Code Playgroud)
并试图让它与一个界面一起工作,认为某些事情会出错,这将使我理解为什么需要另一个界面.
所以我创建了一个集合类,并实现了IForeachable:
class Collection : IForeachable
{
private int[] array = { 1, 2, 3, 4, 5 };
private int index = -1;
public int Current => array[index];
public bool MoveNext()
{
if (index < array.Length - 1)
{
index++;
return true;
}
index = -1;
return false;
}
}
Run Code Online (Sandbox Code Playgroud)
并使用foreach …