linq查询麻烦

时间:2012-01-26 13:56:40

标签: linq entity-framework-4

下面是我尝试做一个简单的Linq-to-entities框架查询的代码,我想逐个访问结果:

inctDomainContext innn = new inctDomainContext();  
var exx = from c in innn.cordonnes select c;
foreach (var i in exx) {
    //doing something here but the programe doesn't enter the loop
}

为什么程序不进入foreach循环?

2 个答案:

答案 0 :(得分:0)

你确定那里有数据吗?

试试这个:

inctDomainContext innn = new inctDomainContext();  
bool exxAny = innn.cordonnes.Any();

如果exxAnyfalse,则集合中没有数据,因此foreach不执行任何操作。

答案 1 :(得分:0)

您似乎正在使用Silverlight中的WCF Ria服务。这与直接使用EntityFramework时的工作方式完全不同。在您的情况下,您必须“加载”数据,然后才能访问它。

为此,您必须在域上下文中调用“Load”方法并传入您需要的查询(在您的情况下为GetCoordonneQuery()),然后您可以传递回调以在加载异步调用完成。回调将有权访问查询结果。这是一个例子:

....
context.Load(GetCoordonneQuery(),OnLoadCoordonneCompleted,null)
....

void OnLoadCoordonneCompleted(LoadOperation<Coordonne> loadOp)
{
    foreach(var coordonne in loadOp.Entities)
    {
       //do something with the data
    }
}

当调用OnLoadCoordonneCompleted时(即:当异步加载调用完成时),将加载context.Coordonnes并包含您想要的数据。

希望这有帮助