RavenDB, LINQ, выбор из строки [], где массив не содержит заданной строки

Учитывая очень простой string[], я пытаюсь выполнить следующее в простом синтаксисе LINQ с RavenDB.

public class Item {
   public string[] Tags { get; set; }
}
var list = new List<Item> {
  new Item { Tags = new string[] { "one", "two", "three" } },
  new Item { Tags = new string[] { "one", "two" } },
  new Item { Tags = new string[] { "one" } }
};

И тогда я могу легко запросить это, вот так;

var items = session.Query<Item>().Search( n => n.Tags, "one" ).Take(3).ToList();

Это позволяет мне легко получить все элементы с тегом в их string[], которые я хочу, но я хочу сделать обратное (очевидно, для моего варианта использования сценарий намного сложнее, я сжимаю его для этого примера).

Я хочу написать запрос LINQ, который будет работать с Raven и даст мне все объекты, у которых нет заданного тега. Как «перевернутый» поиск.

Contains() был удален из RavenDB, поэтому я не могу использовать для него обратное логическое значение. До сих пор мне просто приходилось делать запрос, а затем использовать другую команду LINQ для результата, что я считаю крайне неэффективным. Кто-нибудь знает, как это сделать?

Я также публикую это в списке рассылки групп Google RavenDB.


person Ciel    schedule 27.02.2012    source источник


Ответы (1)


person    schedule
comment
-insertfacedesk- Спасибо. Не могу поверить, что я этого не пробовал. Я пробовал более пятидесяти разных вещей, но никогда не думал о самом простом. - person Ciel; 28.02.2012