在ToList()方法调用时调用数据库

时间:2012-05-07 09:24:47

标签: c# linq linq-to-entities tolist entity-framework-4.2

从我的存储库中,我使用ToList()方法返回不同的List。

问题是当我在这个返回的结果(即List类型)上运行更多LINQ时,它也会为此生成一个数据库调用。显然,第二个linq calll是纯LINQ to Entity,不应该调用数据库。看下面我在做什么。

List<User> us = userRepository.GetMany(u => filterStatusIds.Contains(u.UserStatus.Id));
if (!string.IsNullOrEmpty(name))
us = (from u in us
      where u.DisplayName.Contains(name)
      select u).ToList(); // this ToList should not call database

停止此额外数据库调用的任何帮助或想法?

1 个答案:

答案 0 :(得分:1)

从存储库返回IEnumerable<User>IQueryable<T>,它不会查询数据库。

在ToList()之后,只有第二次调用会执行此操作。