gpt4 book ai didi

c# - 流利的 Nhibernate : Query to retrieve distinct values

转载 作者:行者123 更新时间:2023-11-30 19:25:17 27 4
gpt4 key购买 nike

在 DB2 LUW 9.7 数据库上使用 FluentNhibernate 1.3.0.0、NHibernate 3.3.1.4000。

我只想从一个表/实体中获取一些不同的数据。在 SQL 中,这很简单:

select distinct Corporation, CalculationDate, ValuationRule
from MySchema.MyTable
where State == 0

现在,我正在尝试使用 Linq 获取这些数据,但它不起作用...

首先尝试使用选择:

var result = Session.Query<MyEntity>()
.Where( x => x.State == State.Pending)
.Select(
x =>
new
{
Corporation = x.Corporation,
CalculationDate = x.CalculationDate,
ValuationRule = x.ValuationRule,
}).Distinct().ToList();

结果异常:此 SelectClauseVisitor 不支持表达式类型“NhDistinctExpression”。

第二次尝试,使用 Groupby 并只获取键:

var result = Session.Query<MyEntity>()
.Where( x => x.State == State.Pending)
.GroupBy(
x =>
new
{
Corporation = x.Corporation,
CalculationDate = x.CalculationDate,
ValuationRule = x.ValuationRule,
}).Select( x => x.Key).ToList();

结果异常:“无法执行查询”。提示在 select term 中声明的 group by 子句中缺少另一个字段“Model”。这让我很困惑,因为表中存在指定字段,但我不想在该用例中使用该字段...

我错过了什么?

最佳答案

尝试使用 QueryOver...

var result = Session.QueryOver<MyEntity>()
.Where(x => x.State == State.Pending)
.SelectList(list => list
.SelectGroup(x => x.Corporation)
.SelectGroup(x => x.CalculationDate)
.SelectGroup(x => x.ValuationRule)
)
.ToList();

如果你想使用不同的:

var result = Session.QueryOver<MyEntity>()
.Where(x => x.State == State.Pending)
.SelectList(list => list
.Select(Projections.Distinct(Projections.Property<MyEntity>(x => x.Corporation)))
.Select(x => x.CalculationDate)
.Select(x => x.ValuationRule)
)
.ToList();

关于c# - 流利的 Nhibernate : Query to retrieve distinct values,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29848421/

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