Sql LLBL Gen Pro中的子查询

Sql LLBL Gen Pro中的子查询,sql,llblgenpro,Sql,Llblgenpro,我是LLBL gen pro的新手,我必须使用LLBL gen pro编写子查询,但我没有得到任何如何编写的示例。 这是我必须写的查询,我知道如何定义字段、关系和谓词表达式 select UserId, TransactionId from UserTransaction where TransactionId in ( select MaxId as TransactionId from (SELECT MAX([TransactionId]) as MaxId, userid FROM

我是LLBL gen pro的新手,我必须使用LLBL gen pro编写子查询,但我没有得到任何如何编写的示例。 这是我必须写的查询,我知道如何定义字段、关系和谓词表达式

select UserId, TransactionId from 
UserTransaction
where TransactionId in
(
select  MaxId as TransactionId from
(SELECT MAX([TransactionId]) as MaxId, userid
FROM [UserTransaction]
group by userid) u1
inner join [UserTransaction] c2 on u1.MaxTId = c2.CCLeadTransactionId
where UserTypeId in (4,5)
)
这是我的桌子结构

UserTransaction
TransactionId userid UserTypeId
如何编写此查询

  select  MaxId as TransactionId from
    (SELECT MAX([TransactionId]) as MaxId, userid
    FROM [UserTransaction]
    group by userid) u1
    inner join [UserTransaction] c2 on u1.MaxTId = c2.CCLeadTransactionId
    where UserTypeId in (4,5)

基本思想是创建父查询可以使用的内部查询

下面的示例代码(尚未测试,可能包含拼写错误)

var qf=newqueryfactory();//创建您的创建工厂
var subFilterQuery=qf.Create()
.Select(()=>UserTransaction.TransactionId.SetAggregateFunction(AggregateFunction.Max).ToValue())//选择最大事务值
//加入
.GroupBy(UserTransactionFields.UserId);
var parentQuery=qf.Create()
.选择(()=>新建{
UserId=UserTransactionFields.UserId.ToValue(),
TransactionId=UserTransactionFields.TransactionId.ToValue(),
})
.Where(UserTransactionFields.TransactionId.In(subFilterQuery.ToScalar());//使用创建查询作为筛选器
var qf = new QueryFactory(); // create your create factory

var subFilterQuery = qf.Create()
    .Select(()=> UserTransaction.TransactionId.SetAggregateFunction(AggregateFunction.Max).ToValue<int>()) // select max transaction value
    // do joins, etc
    .GroupBy(UserTransactionFields.UserId);

var parentQuery = qf.Create()
    .Select(()=> new {
        UserId = UserTransactionFields.UserId.ToValue<int>(),
        TransactionId = UserTransactionFields.TransactionId.ToValue<int>(),
    })
    .Where(UserTransactionFields.TransactionId.In(subFilterQuery.ToScalar())); // use create query as filter