原谅我潜在的新手问题,我已经做了一些搜索和一些玩弄,但我似乎无法产生预期的效果。
我想复制以下查询:
SELECT * FROM ITEM WHERE ItemNumber IN ('00012A', '0034B', 'AB097');
我有一个明确的项目列表,我想限制我的查询,但它产生以下异常:
System.NotSupportedException: Specified method is not supported.
以下是我正在使用的方法:
public IList<Item> GetItemList(List<String> distinctItemList)
{
var sessionFactory = CreateSessionFactory();
using (var session = sessionFactory.OpenSession())
{
using (session.BeginTransaction())
{
return session.Query<Item>()
.Where(x => distinctItemList.Any(y => y == x.ItemNumber)).ToList();
}
}
}
有什么想法?我最初成功回归
session.CreateCriteria(typeof (Item)).List<Item>();
..但我似乎无法对此进行修改以允许限制条款。
答案 0 :(得分:0)
这最终比我最初的想法容易得多:
return session.QueryOver<Item>()
.Where(i => i.ItemNumber.IsIn(distinctItemList)).List();