这里是我的相关类:NHibernate的查询匹配的所有标签
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; }
}
这些映射了多对多关联。中间表名为ItemsToTags。
这里的问题:
给出一个字符串列表,我该如何创建一个NHibernate的查询,返回所有
Item
S作所有的Tag
s的Name
小号匹配在给定列表中的所有字符串?
这是函数签名:
IList<Item> GetItemsWithTags(IList<string> tagNames);
我需要的东西,如:提前
from Item item
where !tagsNames.Except(
from item.Tags select item.Tags.Name
).Any()
select item
感谢您的帮助。
对不起,我误解了你的问题,并没有意识到你需要*全部*标签来匹配。我知道如何用直接的SQL来做到这一点,但我不得不考虑如何使用NHibernate做到这一点......我在此期间删除了我的不正确答案。 – 2009-06-04 21:09:34