【发布时间】:2014-09-22 01:37:29
【问题描述】:
无论我多么努力,我都无法让它工作,我不确定它是否可能。 我想选择所有至少有一个订单的客户。
我尝试的第一件事是 db.Exists 如下:
SqlExpression<Client> exp = OrmLiteConfig.DialectProvider.SqlExpression<Client>();
exp.Where(x => Db.Exists<Order>(z => z.ClientId == x.Id));
但我收到以下错误
从范围“”引用的“[程序集].Client”类型的变量“x”,但未定义`
第二次尝试是使用 Join 和 SelectDistinct:
SqlExpression<Client> exp = OrmLiteConfig.DialectProvider.SqlExpression<Client>();
ev.Join<Client, Order>((b, a) => b.Id == a.ClientId)
.SelectDistinct(x => new { x.Id, x.ClientNumber, x.ClientNameName});
虽然不是最优的,但直到我需要通过
对结果集进行分页的那一刻ev.Limit(skip:((request.Page-1) * request.PageSize), rows:request.PageSize)
当使用 Limit 时,逻辑上不同的元素在构建查询时会被忽略,所以我现在得到了重复的客户端。
有没有其他方法,或者一般来说有没有办法处理 OrmLite 中的子查询? 任何帮助表示赞赏。
【问题讨论】:
-
任何人对此有任何想法!
标签: subquery servicestack exists ormlite-servicestack