Nhibernate平等标准

Nhibernate平等标准,nhibernate,Nhibernate,我有一个场景,我必须用给定的字符串列表检查表id列表,并获取所有相关数据。我知道如何检索一个相等标准的数据 var criteria = sm.Session.CreateCriteria(GetRegisteredType<Data>()); criteria = criteria.Add(Expression.Eq("Id", "9999")); var-criteria=sm.Session.CreateCriteria(GetRegisteredType()); crit

我有一个场景,我必须用给定的字符串列表检查表id列表,并获取所有相关数据。我知道如何检索一个相等标准的数据

var criteria = sm.Session.CreateCriteria(GetRegisteredType<Data>());

criteria = criteria.Add(Expression.Eq("Id", "9999"));
var-criteria=sm.Session.CreateCriteria(GetRegisteredType());
criteria=criteria.Add(Expression.Eq(“Id”,“9999”));
我有一个字符串列表,我需要用Id列检查。
有人能帮我吗?

您需要使用基于
ICriteria
的查询吗?否则,基于LINQ的查询将类似于:

var results = 
    sm.Session
        .Query<Data>()
        .Where(d => listOfStrings.Contains(d.Id))
        .ToList();
var结果=
高级管理人员会议
.Query()
.Where(d=>listOfStrings.Contains(d.Id))
.ToList();

但是,您需要注意字符串列表的大小,因为它们将作为参数传递,并且会受到限制。

是否需要使用基于
ICriteria
的查询?否则,基于LINQ的查询将类似于:

var results = 
    sm.Session
        .Query<Data>()
        .Where(d => listOfStrings.Contains(d.Id))
        .ToList();
var结果=
高级管理人员会议
.Query()
.Where(d=>listOfStrings.Contains(d.Id))
.ToList();

但是,您需要注意字符串列表的大小,因为它们将作为参数传递,并且会受到限制。

假设您有以下列表:

var list = new string[] { "9999", "1111" };
  • 标准

    Session.CreateCriteria(GetRegisteredType<Data>()).Add(Restrictions.InG("Id", list));
    
    Session.CreateCriteria(GetRegisteredType()).Add(Restrictions.InG(“Id”,list));
    
  • 询问者

    Session.QueryOver<Data>().Where(x => x.Id.IsIn(list));
    
    Session.QueryOver()。其中(x=>x.Id.IsIn(list));
    
  • NHibernate.LINQ

    Session.Query<Data>().Where(x => list.Contains(x.Id))
    
    Session.Query().Where(x=>list.Contains(x.Id))
    

  • 假设您拥有以下列表:

    var list = new string[] { "9999", "1111" };
    
  • 标准

    Session.CreateCriteria(GetRegisteredType<Data>()).Add(Restrictions.InG("Id", list));
    
    Session.CreateCriteria(GetRegisteredType()).Add(Restrictions.InG(“Id”,list));
    
  • 询问者

    Session.QueryOver<Data>().Where(x => x.Id.IsIn(list));
    
    Session.QueryOver()。其中(x=>x.Id.IsIn(list));
    
  • NHibernate.LINQ

    Session.Query<Data>().Where(x => list.Contains(x.Id))
    
    Session.Query().Where(x=>list.Contains(x.Id))
    

  • 在上面的链接问题中,您的答案可能重复。如果您需要对子查询执行此操作,请参阅。您的答案可能与上面链接的问题重复。如果需要使用子查询执行此操作,请参阅。