我在这个线程中有一个关于 Parelle 和 Task 的问题。与此相关的上一个问题
我正在尝试做的是迭代通过存储过程从实体框架返回的集合。
在第一个循环中,所有查询都完美无缺,但在第二个循环中,当我尝试跳过先前的查询结果时,我得到一个查询结果不能多次枚举错误。
我意识到调试器告诉我我不能以这种方式分页这个集合。
如何使用 .Skip() 而不会出现该错误?我需要能够遍历整个集合,直到到达终点。
这样做有什么魔力?
就像我提到的那样,我可以循环一次,但在那之后我得到了那个错误。
帮助!
ObjectResult<Guid?> memIDs = await Task.Run(() => db.proc_GetCollaborator_UserIDs(projectID));
if (memIDs != null)
{
while (true)
{
var t = memIDs.Take(Environment.ProcessorCount)
.Select(id => Task.Run(() => projCollabors.Add(new Collaborator(id.Value, projectID))))
.Skip(skip)
.ToArray();
if (t.Length == 0) { break; };
skip += Environment.ProcessorCount;
await Task.WhenAll(t);
};
};