【问题标题】:Need help with a linq query please!需要有关 linq 查询的帮助!
【发布时间】:2009-07-27 16:13:55
【问题描述】:

我正在尝试编写一个查询来搜索包含特定“产品”的“订单”,但我在让它工作时遇到了一点困难。基本上,这就是我想要做的:

Dim orders = From o in db.Orders _
             Where o.OrderProducts.Contains(Function(p) p.ProductID = 123) _
             Select o 

我也试过...

Where o.OrderProducts.Where(Function(p) p.ProductID = 123)

但这也不起作用。我哪里错了?谢谢!

【问题讨论】:

  • 您能告诉我们“它不起作用”是什么意思吗?你有错误吗?
  • 错误可能类似于以下内容:Contains() 期望接收 OrderProduct 类型的对象而不是 lambda 表达式,而 Where() 返回一个集合(可能是 IQueryable<OrderProduct> ) 而不是布尔值。

标签: asp.net linq linq-to-sql


【解决方案1】:

尝试使用Any()

Dim orders = From o in db.Orders _
             Where o.OrderProducts.Any(Function(p) p.ProductID = 123) _
             Select o

【讨论】:

  • 谢谢,成功了。我不知道 .Any() 运算符...它到底是做什么的?我尝试搜索“linq to sql any”,但 any 似乎太常见了,无法获得实际结果。
  • 它的功能与您期望 Contains() 的方式完全相同。它将查找集合中满足所提供条件的任何项目(在本例中为 o.OrderProducts)。如果它找到一个项目,它将短路并返回 true,或者它会一直查找直到集合结束(如果没有找到项目,则返回 false)。
猜你喜欢
  • 1970-01-01
  • 2011-08-06
  • 1970-01-01
  • 1970-01-01
  • 2011-04-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多