Linq NHibernate查询,WHERE条件成对
我有一个NHibernate对象的集合Linq NHibernate查询,WHERE条件成对,linq,nhibernate,Linq,Nhibernate,我有一个NHibernate对象的集合ConcurrentBag,其属性为project\u id和name。我想从另一个表中创建一组不相关的(模式方面的)对象,这些对象也与这些属性匹配 我所期望的SQL类似于: SELECT * FROM table WHERE (project_id = 1 AND name = 'foo') OR (project_id = 2 AND name = 'foo') OR (project_id = 1 AND name = 'bar')
ConcurrentBag
,其属性为project\u id
和name
。我想从另一个表中创建一组不相关的(模式方面的)对象,这些对象也与这些属性匹配
我所期望的SQL类似于:
SELECT * FROM table WHERE (project_id = 1 AND name = 'foo')
OR (project_id = 2 AND name = 'foo')
OR (project_id = 1 AND name = 'bar')
... etc
WHERE子句中的值对基于ConcurrentBag
中每个事件的值
我不知道如何使用NHibernate(最好是使用LINQ)来查询这个问题。这可能吗?我认为这对于LINQ来说很难,但是如果您使用QueryOver,那么使用限制动态构建WHERE
子句就很容易了。析取
:
var disjunction = Restrictions.Disjunction();
foreach (Event evt in events)
{
disjunction.Add(Restrictions.Where<Table>(
t => t.project_id == evt.project_id && t.name == evt.name);
}
var rows = session.QueryOver<Table>()
.Where(disjunction)
.List<Table>();
var disjunction=Restrictions.disjunction();
foreach(事件中的事件evt)
{
析取.Add(Restrictions.Where)(
t=>t.project\u id==evt.project\u id&&t.name==evt.name);
}
var rows=session.QueryOver()
.Where(析取)
.List();
如果值是字面确定的,但我不知道如何从值的IEnumerable
中生成Where(…)过滤器。问题可能不清楚,我会更新。@AndySavage:Updated——使用QueryOver这可能比LINQ更容易。