我有一个场景,我必须检查具有给定字符串列表的表ID列表并获取所有相关数据。我知道如何检索一个相同标准的数据。
var criteria = sm.Session.CreateCriteria(GetRegisteredType<Data>());
criteria = criteria.Add(Expression.Eq("Id", "9999"));
我需要使用Id列检查字符串列表。 任何人都可以帮我吗?
答案 0 :(得分:1)
您是否需要使用基于ICriteria
的查询?如果没有,基于LINQ的查询将类似于:
var results =
sm.Session
.Query<Data>()
.Where(d => listOfStrings.Contains(d.Id))
.ToList();
但是,您需要警惕字符串列表的大小,因为它们将作为参数传递,并且会受到限制。
答案 1 :(得分:1)
我们假设您有列表:
var list = new string[] { "9999", "1111" };
标准
Session.CreateCriteria(GetRegisteredType<Data>()).Add(Restrictions.InG("Id", list));
QueryOver
Session.QueryOver<Data>().Where(x => x.Id.IsIn(list));
NHibernate.LINQ
Session.Query<Data>().Where(x => list.Contains(x.Id))