繁体   English   中英

使用ADO.Net数据服务和LINQ选择单一值

[英]Select Single Value with ADO.Net Data Services and LINQ

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

这是我使用的LINQ查询:

var qry =(从svcContext.Products中的p,其中p.ProductName ==“ Chair” && p.Colour == 1选择c)作为DataServiceQuery;

产品退货

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

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

可以肯定的是,我做错了:)...任何帮助将不胜感激。

不应该是

var qry =(从svcContext.Products中的p,其中p.ProductName ==“ Chair” && p.Colour == 1选择p)在哪里声明了c?

对不起应该是

var qry =(从svcContext.Products中的p,其中p.ProductName ==“ Chair” && p.Colour == 1选择p)作为DataServiceQuery <Product>;

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

您不是第一个被所有silverlight传出请求的异步特性所困扰的人。

在lambda表达式中

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

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

解决的办法是有效地使用“returnedProd”来填充任何你需要的lambda表达式的UI或。 就像是 :

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

否则,对于社区来说是有用的答案,我希望我在几周前得到一个答案:(

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM