1

尝试使用 ADO.Net 数据服务。所有示例都显示了如何检索列表,但您将如何检索单个值?例如产品 X 的价格。

这是我使用的 LINQ 查询:

var qry = (from p in svcContext.Products where p.ProductName == "Chair" && p.Colour == 1 select c) as DataServiceQuery;

产品退回产品;

qry.BeginExecute((pr) => returnedProd = qry.EndExecute(pr).First(), null);

在这里,我尝试检索产品并将其加载到局部变量中,但局部变量保持为空。

很确定,我完全错了:) ...任何帮助将不胜感激。

4

4 回答 4

1

它不应该是

var qry = (from p in svcContext.Products where p.ProductName == "Chair" && p.Colour == 1 select p) 你在哪里声明了 c ?

于 2009-07-22T11:31:34.170 回答
0

对不起应该是

var qry = (from p in svcContext.Products where p.ProductName == "Chair" && p.Colour == 1 select p) as DataServiceQuery< Product >;

于 2009-07-22T11:39:12.000 回答
0

First()如果结果集为空,则应引发异常-您确定查询正在执行吗?

于 2009-07-22T12:47:55.533 回答
0

您不是第一个受到所有 silverlight 传出请求的异步性质影响的人。

在 lambda 表达式中

(pr) => returnedProd = qry.EndExecute(pr).First() 

您捕获了局部变量 returnedProd,但通常在 BeginExecute 被调用后将分拆的线程为时已晚。它可能会在执行超出当前方法的范围后执行,并且变量将丢失。

解决方案是有效地使用“returnedProd”来填充 UI 或您需要在 lambda 表达式中执行的任何操作。就像是 :

(pr) => {
    returnedProd = qry.EndExecute(pr).First();
    MessageBox.Show("Retrieved record" + returnedProd.Id);
}

否则对社区有用的答案,我希望几周前有一个:(

于 2009-08-26T11:12:59.437 回答