这应该非常简单,但我无法理解。
我可以将数据绑定到如下所示的数据网格......
var context = new DishViewDomainContext();
this.dataGrid1.ItemsSource = context.Restaurants;
context.Load(context.GetRestaurantsQuery());
。这工作......但是现在我只想把这个集合放在一个变量中,我可以循环收集...这似乎不可能..我这样做,似乎什么也没有...我不确定是什么第3行呢..它运行域服务方法,但它在哪里填充数据?
var dc = new DomainService1();
IEnumerable<ApplicationLog> collApplicationLog = dc.ApplicationLogs;
dc.Load(dc.GetApplicationLogsQuery());
foreach (ApplicationLog al in collApplicationLog)
{
int? i = al.ApplicationID;
}
答案 0 :(得分:0)
尝试以下
var collApplicationLog = dc.ApplicationLogs.ToList();
答案 1 :(得分:0)
对dc.Load(...)的调用是异步网络操作。该调用立即返回,但是它应该加载的数据在以后的某个时间才会可用。
dc.Load(...)的返回值是一个LoadOperation对象,它有一个Completed事件。您需要向Completed事件添加事件处理程序,以便在加载数据并且可以使用IEnumerable时通知您。
原因如下:只使用IEnumerable,您将无法知道数据何时到达。从中提取IEnumerable的EntitySet也实现了INotifyCollectionChanged。这就是XAML数据绑定到IEnumerable的工作原理 - 数据绑定在数据到达时发现它因为它监听集合更改通知,然后它从枚举中获取数据。
您的foreach循环不等待数据到达。