我有一段看起来像这样的代码:
var schedEvents = _dataContext.ScheduledEvents.Where(se => eventParents.Contains(se.HierarchyItem.Id));
var schedEventsEnum = schedEvents.GetEnumerator();
while (schedEventsEnum.MoveNext())
{
string eventID = schedEventsEnum.Current.Id.ToString();
string eventName = schedEventsEnum.Current.EventName.ToString();
jsonStr += "{ \"id\" : \"" + eventID + "\", \"text\" : \"" + eventName + "\"},";
}
eventParents在此之前构建,但它只是用于比较的分层项ID的列表(目的是查找该列表中ID的子项的所有事件)。这部分似乎工作正常。代码的第一行命中数据库一次,并提取我想要的一切。但是,一旦它到达GetEnumerator部分,它就会再次启动数据库,这是我试图避免的。但我不确定为什么会发生这种情况。
我之前在代码中做的基本相同的事情是通过Hierarchical项目,它只是命中db一次所以我不确定为什么让这个的枚举器可能不同。< / p>