我有一個查詢由QueryOver:NHibernate的QueryOver由枚舉標誌
public IList<Person> SearchTest(PersonEnumType type)
{
var q = SessionInstance.QueryOver<Person>();
q = q.Where(x => (x.PersonEnumType & type) == type);
return q.List<Person>();
}
和PersonEnumType
是一個枚舉標誌:
[Flags]
public enum PersonEnumType
{
Employee1 = 1,
Employee2 = 2,
Employee3 = 4
}
這將引發Could not determine member from (Convert(x.PersonEnumType) & Convert(value(NHibernate.Repository.PersonRepositoryNh+<>c__DisplayClass2).type))
當然這部作品在NHibernate的。 LINQ。
爲什麼?
我的猜測是,與Linq的操作是在內存中完成,因此它將首先加載所有人,然後在內存中執行x.PersonEnumType&type過濾。或者,也許linq提供商就是這麼好。無論如何[你可以做它使用ICriteria](http://stackoverflow.com/questions/1835392/hql-to-criteriaquery-when-using-bitwise-operators) – 2012-02-21 16:42:35