Hier sind meine relevanten Klassen:NHibernate-Abfrage für den Abgleich Alle Tags
public class Item {
public virtual int Id { get; protected set; }
public virtual IList<Tag> Tags { get; set; }
}
public class Tags {
public virtual int Id { get; protected set; }
public virtual string Name { get; set; }
public virtual IList<Item> Items { get; set; }
}
Diese sind mit einem viel zu viele Vereinigung abgebildet. Die Zwischentabelle heißt ItemsToTags.
Hier ist die Frage:
eine Liste von Strings gegeben, wie erstelle ich eine NHibernate-Abfrage, die alle
Item
s zurückgibt, die alleTag
s mitName
s haben alle Fäden in der angegebenen Liste passender?
Dies ist die Funktion Signatur:
IList<Item> GetItemsWithTags(IList<string> tagNames);
Ich brauche so etwas wie:
from Item item
where !tagsNames.Except(
from item.Tags select item.Tags.Name
).Any()
select item
Vielen Dank im Voraus für jede Hilfe.
Entschuldigung, ich habe Ihre Frage falsch gelesen und habe nicht bemerkt, dass Sie * alle * Tags benötigen, um zu passen. Ich weiß, wie man das mit SQL macht, aber ich muss darüber nachdenken, wie man es mit NHibernate macht ... Ich habe in der Zwischenzeit meine falsche Antwort gelöscht. –