查找子集合中不包含任何项目的所有项目

Rya*_*ldi 5 linq ravendb

鉴于:

public class Order
{
    public string Name {get;set;}
    public List<LineItem> LineItems {get; set;}
}

public class LineItem
{
   public string Product {get; set;}
   public int Quantity {get; set;}
}
Run Code Online (Sandbox Code Playgroud)

我试图弄清楚如何构造一个查询,该查询将返回所有没有 LineItem且产品名为“ Apple” 的订单

Mat*_*int 4

我已经思考这个问题有一段时间了。已经出现好几次了 问题是 Raven 目前不处理 !.Any() 或 .All() 查询。

这个特殊的例子充分简化了问题,让我开始思考不同的路径。我相信有一个解决方案。它需要针对静态索引进行 lucene 查询:

public class Orders_ByProduct : AbstractIndexCreationTask<Order>
{
  public Orders_ByProduct()
  {
    Map = orders => from order in orders
                    select new
                    {
                        Product = order.LineItems.Select(x => x.Product)
                    };
  }
}

var ordersWithoutApple = session.Advanced
                                .LuceneQuery<Order, Orders_ByProduct>()
                                .Where("*:* AND -Product: Apple")
Run Code Online (Sandbox Code Playgroud)