2

我有实体。

class Something{
   public List<string> Tags {get;set;}
}

现在我需要查询所有没有给定标签的实体。

var res = s.Query<Something>()            
           .Where(x => !x.Tags.Any(t => t == "Test3"));

失败:

未处理的异常:System.InvalidCastException:无法将“System.Linq.Expressions.MethodCallExpressionN”类型的对象转换为“System.Linq.Expressions.MemberExpression”类型。

普通查询也不起作用:

var res = s.Advanced.LuceneQuery<Something>()
           .Where("-Tags:Test3");

...它只是什么都不返回。

如何编写这样的查询?

4

2 回答 2

5

您可以使用一个 In 扩展方法,它也适用于 !

于 2011-04-25T17:40:34.873 回答
1

解决方法很简单:

var res = s.Advanced.LuceneQuery<Something>()
  .Where("Tags:(* -Test3)");
于 2011-04-25T09:03:09.547 回答