如何在hibernate中获取查询表的值?

时间:2012-07-17 08:14:32

标签: c# linq nhibernate

我有这样的查询:

var query = scope.Session.QueryOver<Task>().Where(s => s.Code == code && s.Flag == flag && s.Antry != null);

我有第二个问题:

var personQuery = scope.Session.QueryOver<Person>();

查询有一个字段ID,对应personQuery中的ID。

我想要的是使personQuery仅包含查询中存在的ID。到目前为止,我一直这样做:

int[] arr  = query.Where(i=> i.Id!=null).List<int>().ToArray();
entryQuery.Where(i => i.Id.IsIn(arr));

但是,我认为这会失败,因为我知道:

query.Where(i=> i.Id!=null).List<int>().ToArray();

不会返回整数数组,而是返回查询对象。

那我怎么才能在查询中得到整数的id?

1 个答案:

答案 0 :(得分:2)

要从查询中仅获取整数id,您可以选择一个只包含您感兴趣的属性的匿名类型:

var integerids = scope.Session.QueryOver<Person>()
    .Select(p => p.Id)
    .List<int>();