【问题标题】:Query objects containing at least one element from a subset with RavenDB and LINQ使用 RavenDB 和 LINQ 从子集中查询包含至少一个元素的对象
【发布时间】:2013-12-09 05:47:24
【问题描述】:

我在此线程中解决了类似的问题:Finding objects which contains at least one element from subset using RavenDB and LINQ,但我并不清楚答案。

string[] Categories = new[] {"A", "B"};

foreach (var cat in Categories)
{
   var currentTag = cat;
   products = products.Where(p => p.Categories.Any(c =>c.Id == currentTag));
}

在调试“Products”时,每个 where 语句之间的结果是“AND”而不是“OR”(例如 ...where category=A AND category=B。你怎么能做同样的事情,只是用一个 OR 运算符?

我的意思是,给我所有产品,至少有类别 A OR B。

最好的 尼玛

【问题讨论】:

  • Any 是 Or,All 是 And。
  • Tim:谢谢,刚刚更正了示例。
  • Raven 似乎不支持“All” - 并且“Any”给出了“AND”。我错过了什么?
  • @Nima 并不是 Any 给出了 AND,事实上您正在以一种导致行为的方式在循环中编写查询。
  • @Euphoric 非常感谢你——就像魅力一样!一段时间以来一直在为此苦苦挣扎 - 非常感谢您的帮助!

标签: c# .net linq ravendb


【解决方案1】:

您需要使用In 运算符。

string[] cats = new[] {"A", "B"};

var products = session.Query<Products>().Where(p => p.Categories.Any(c =>c.Id.In(cats)));

【讨论】:

  • 正是我需要的!谢谢!!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-09-06
  • 1970-01-01
  • 2020-04-17
  • 2012-03-31
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多