【发布时间】:2016-09-01 00:25:28
【问题描述】:
假设我有一个包含一个字符串值的列表。假设我还有一个包含来自数据库的多个字符串的 IQueryable。我希望能够将这两个容器连接到一个列表中,然后能够在列表中调用 .Skip 或 .Take 等方法。我希望能够以这样一种方式做到这一点,即当我组合两个容器时,我不会将所有数据库数据加载到内存中(仅在我调用 .Skip 和 .Take 之后)。基本上,我想做这样的事情(伪代码):
IQueryable someQuery = myEntities.GetDBQuery(); // Gets "test2", "test3"
IList inMemoryList = new List();
inMemoryList.Add("test");
IList finalList = inMemoryList.Union(someQuery) // Can I do something like this without loading DB data into memory? finalList should contain all 3 strings.
// At this point it is fine to load the filtered query into memory.
foreach (string myString in finalList.Skip(100).Take(200))
{
// Do work...
}
我怎样才能做到这一点?
【问题讨论】:
-
我没有发现这样做有什么问题?你有什么错误吗?
-
在我创建finalList的那一行,不是所有的DB数据都被加载到内存中了吗(不仅仅是.Skip(100).Take(200)之间的条目)?
标签: c# linq list iqueryable