【问题标题】:Select Single Value with ADO.Net Data Services and LINQ使用 ADO.Net 数据服务和 LINQ 选择单个值
【发布时间】:2009-08-26 19:12:59
【问题描述】:

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

这是我使用的 LINQ 查询:

var qry = (从 p in svcContext.Products 其中 p.ProductName == "椅子" && p.颜色 == 1 选择 c) 作为 DataServiceQuery;

产品退回产品;

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

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

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

【问题讨论】:

    标签: c# linq wcf-data-services


    【解决方案1】:

    不应该是这样的

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

    【讨论】:

      【解决方案2】:

      对不起

      var qry = (从 p in svcContext.Products 在哪里 p.ProductName == "椅子" && p.Color == 1 选择 p) 作为 DataServiceQuery;

      【讨论】:

        【解决方案3】:

        如果结果集为空,First() 应该抛出异常 - 你确定查询正在执行吗?

        【讨论】:

          【解决方案4】:

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

          在 lambda 表达式中

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

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

          解决方案是有效地使用“returnedProd”来填充 UI 或您需要执行的任何操作IN lambda 表达式。类似的东西:

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

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

          【讨论】:

          • 试试这段小代码,让我们知道至少在 MessageBox.Show 中您是否获得了所需的数据..
          猜你喜欢
          • 1970-01-01
          • 2010-10-11
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2010-10-29
          • 2018-01-06
          • 2011-01-22
          相关资源
          最近更新 更多