は私が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
}
これはこれはNHibernateはで動作もちろんCould not determine member from (Convert(x.PersonEnumType) & Convert(value(NHibernate.Repository.PersonRepositoryNh+<>c__DisplayClass2).type))
をスローします。 Linq。
なぜですか?
私の推測では、Linqではメモリ内で操作が行われるため、最初にすべての人物が読み込まれ、メモリ内にx.PersonEnumTypeと型のフィルタリングが行われます。あるいは、linqプロバイダーはそれだけで良いです。とにかく[あなたはICriteriaを使用してそれを行うことができます](http://stackoverflow.com/questions/1835392/hql-to-criteriaquery-when-using-bitwise-operators) –