【问题标题】:testing for no return from LINQ测试 LINQ 不返回
【发布时间】:2012-11-17 14:37:58
【问题描述】:

在使用 LINQ to Entities 时,如何测试对象是否没有结果? 例如,如果 custid 没有订单历史记录但页面仍会加载,则以下查询将不返回任何结果,它只是没有 gridview,因为没有数据源可以绑定到。

Dim result = From c In ctx.orders
                 Where c.CustomerId = custId
          Join prod In ctx.products On prod.Id Equals c.ProductId
        Select New With
        {c.OrderDate,
         c.PurchaseOrderNumber,
         prod.description,
         c.ProductPrice,
         c.ProductQty}

如果没有结果,您如何测试对象?如果没有返回结果,我想测试它以向页面提供不同的标记。显然我已经尝试过 If result = vbNull,也尝试过 Is Nothing,这些都不起作用。另一个问题是在 Try Catch 块中使用此查询时,即使没有返回结果,它也不会捕获异常,我猜它不会将其视为错误。

【问题讨论】:

    标签: asp.net .net vb.net linq


    【解决方案1】:

    你可以像这样使用Any()

    Dim hasElements As Boolean = result.Any();
    

    【讨论】:

      【解决方案2】:

      您可以在绑定数据后检查 gridview 中的行数;不会像Any 那样查询数据库两次,也不会像ToList 那样使用额外的内存。

      【讨论】:

        【解决方案3】:

        如果以后使用result,最好先转换成List<T>,这样就不会多次连接数据库了

        暗列表 = result.ToList()

        然后,由于已经得到答复,您可以致电list.Any()

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-06-20
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多