QueryOver、GroupBy 和 Subselect
QueryOver, GroupBy and Subselect
如何使用 queryover 和子查询执行此操作?
FakturaObjektGutschrift fog = null;
int[] idS = Session.QueryOver(() => fog)
.SelectList( list => list
.SelectMax(() => fog.Id)
.SelectGroup(() => fog.SammelKontierung)
).List<object[]>().Select(x => (int)x[0]).ToArray();
并在另一个查询中使用这些 ID
IQueryOver<Beleg, Beleg> sdfsd = Session.QueryOver(() => bGut)
.AndRestrictionOn(() => fog.Id).IsIn(idS); //iDs is a list of int.
我想用子查询执行此操作,因为 SQL 查询的参数数量有限制。我该怎么做?
如何编写第一个查询,但不选择 SelectGroup()?这正是我卡住的地方。
Group by 当前不支持 QueryOver API 中没有投影 link.
您可以使用 LINQ 在子查询中创建投影:
var subquery = Session.Query<FakturaObjektGutschrift>()
.GroupBy(x => x.SammelKontierung)
.Select(x => x.Max(y => y.Id));
var query = Session.Query<Beleg>()
.Where(x => subquery.Contains(x.Id));
如果您确实需要 QueryOver 来创建更复杂的查询,请查看此解决方案 。
如何使用 queryover 和子查询执行此操作?
FakturaObjektGutschrift fog = null;
int[] idS = Session.QueryOver(() => fog)
.SelectList( list => list
.SelectMax(() => fog.Id)
.SelectGroup(() => fog.SammelKontierung)
).List<object[]>().Select(x => (int)x[0]).ToArray();
并在另一个查询中使用这些 ID
IQueryOver<Beleg, Beleg> sdfsd = Session.QueryOver(() => bGut)
.AndRestrictionOn(() => fog.Id).IsIn(idS); //iDs is a list of int.
我想用子查询执行此操作,因为 SQL 查询的参数数量有限制。我该怎么做?
如何编写第一个查询,但不选择 SelectGroup()?这正是我卡住的地方。
Group by 当前不支持 QueryOver API 中没有投影 link.
您可以使用 LINQ 在子查询中创建投影:
var subquery = Session.Query<FakturaObjektGutschrift>()
.GroupBy(x => x.SammelKontierung)
.Select(x => x.Max(y => y.Id));
var query = Session.Query<Beleg>()
.Where(x => subquery.Contains(x.Id));
如果您确实需要 QueryOver 来创建更复杂的查询,请查看此解决方案