NHibernate Linq where子句:集合中的值

时间:2011-04-18 18:19:03

标签: nhibernate linq-to-nhibernate

我想知道我可以做一个收集集合的where子句吗?

List<string> myStrings = new List<strings> {"1", "2"};

session.Query<Table>().Where(x => x.Id == myStrings).ToList();

我基本上想从我的db表中获取与该查询中的所有内容匹配的所有行。

session.Query<Table>().Where(x => x.Id == myStrings[0]).ToList();
session.Query<Table>().Where(x => x.Id == myStrings[1]).ToList();
session.Query<Table>().Where(x => x.Id == myStrings[N]).ToList();

这就是我现在要做的事情。我可能会在for循环中通过它,但这有很多查询,而我只是做一个查询。

或者我必须使用nhibernate创建查询语法

var query = "Select * From Where In (:Id)";
session.CreateQuery(query)SetParameter("Id",myStrings) // not sure if I have to something like .ExecuteUpdate(); but just for select instead

3 个答案:

答案 0 :(得分:4)

session.Query<Table>().Where(x => myStrings.Contains(s => x.Id));

答案 1 :(得分:1)

session.Query<Table>().Where(x => myString.All(s => x.Id == s));

答案 2 :(得分:0)

您应该在集合中使用Any或All扩展方法