尝试ADO.Net数据服务。所有示例都显示了如何检索列表,但是如何检索单个值呢?例如产品X的价格。
这是我使用的LINQ查询:
var qry =(来自p in svcContext.Products 其中p.ProductName ==“椅子” &安培;&安培; p.Colour == 1 选择c)作为DataServiceQuery;
产品returnProd;
qry.BeginExecute( (pr)=> returnedProd = qry.EndExecute(pr).First(),null);
这里我尝试检索产品并将其加载到局部变量中,但本地var保持为空。
非常确定,我完全错了:))...非常感谢任何帮助。
答案 0 :(得分:1)
不应该是
var qry =(来自p在svcContext.Products中的p,其中p.ProductName ==“Chair”&& p.Colour == 1 select p)你在哪里声明c?
答案 1 :(得分:0)
抱歉应该是
var qry =(来自p in svcContext.Products在哪里 p.ProductName ==“Chair”&& p.Colour == 1选择p)作为DataServiceQuery<产品&gt ;;
答案 2 :(得分:0)
First()
应抛出异常 - 您确定查询是否正在执行?
答案 3 :(得分:0)
您不是第一个受到所有Silverlight传出请求的异步性质影响的人。
在lambda表达式中
(pr) => returnedProd = qry.EndExecute(pr).First()
你捕获局部变量returnedProd但是通常会在调用AFTER BeginExecute后关闭的线程为时已晚。它可能会在执行超出当前方法范围后执行,变量将丢失。
解决方案是有效地使用“returnedProd”来填充UI或者你需要做什么 IN lambda表达式。类似的东西:
(pr) => {
returnedProd = qry.EndExecute(pr).First();
MessageBox.Show("Retrieved record" + returnedProd.Id);
}
社区的其他有用的答案,我希望我几周前有一个:(