gpt4 book ai didi

c# - nHibernate 子查询-WhereAll 显示 "not a delegate type"-错误

转载 作者:行者123 更新时间:2023-11-30 16:54:33 25 4
gpt4 key购买 nike

我正在尝试创建一个 nHibernate-Query,其后有一个子查询 blog-entry .

我的工作 SQL 看起来像这样:

  SELECT * 
FROM Product
WHERE Id IN (
SELECT p.Id
FROM Product AS p
INNER JOIN ProductSupplier AS ps
ON ps.ProductId LIKE p.Id
WHERE ps.SupplierProductNumber LIKE '102.02-7100'
GROUP BY p.Id
);

我必须按 Id 分组,因为多个供应商可以对同一产品使用相同的 productNumber

我的 nHibernate 如下所示:

query.WithSubquery.WhereAll(
p => p.Id ==
QueryOver.Of<Product>()
.JoinAlias(x => x.Suppliers, () => productSupplierAlias)
.Where(() => productSupplierAlias.Product.Id == productAlias.Id)
.Where(() => productSupplierAlias.SupplierProductNumber == searchtext)
.Select(p => p.Id));

但是我的 .Select(p => p.Id) 显示

cannot convert lambda expression to type 'nHibernate.Creterian.IProjection[]' because it is not a delegate type

最佳答案

在这种情况下,我认为您不应该使用 WhereAll

这行吗:

query.WithSubquery.WhereProperty(p => p.Id)
.In(QueryOver.Of<Product>()
.JoinAlias(x => x.Suppliers, () => productSupplierAlias)
.Where(() => productSupplierAlias.Product.Id == productAlias.Id)
.Where(() => productSupplierAlias.SupplierProductNumber == searchtext)
.Select(p => p.Id)
);

关于c# - nHibernate 子查询-WhereAll 显示 "not a delegate type"-错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30389440/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com