【发布时间】:2013-01-29 12:30:01
【问题描述】:
我有这个问题:
var group = query.GroupBy(x => new
{
...
TestName = isSelected ? x.ClassA.Name : ""
});
var select = group.Select(y => new MyResultDTO()
{
...
TestName = isSelected ? y.First().ClassA.Name : ""
});
这不行……我遇到了一个错误:
选择列表中的列 'tblClassA.Name' 无效,因为它既不包含在聚合函数中,也不包含在 GROUP BY 子句中。
但如果我将 groupBy 更改为 only(采用条件从句):
TestName = x.ClassA.Name
它工作正常... 知道我该怎么做那个条件 GroupBy/Select 吗?
我正在使用 NHibernate 3.3.1
保罗
【问题讨论】:
-
您到底想达到什么目的?我认为您在这里不需要
GroupBy。 -
它只是我代码的一小部分...我将我的结果与其他几个属性分组,其中一些是可选的(UI 中的复选框)
-
SQL 中的选择列表只能包含 group by 子句中存在的列(聚合之外)。这仅仅是因为 group by 使得无法知道返回行中未聚合的列或 group by 中使用的值。现在,如果您在 group by 中有一个条件表达式,以便它有时只使用列的值,那么您不能直接在选择列表中使用该列。我认为如果您在选择列表中也使用完全相同的表达式,它可能会起作用。另一方面,您的最终目标并不完全清楚。
-
谢谢...奥斯卡哪个表达方式?
标签: c# linq nhibernate