1

我有这个查询:

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

保罗

4

1 回答 1

1

不确定你想达到什么目标,但你试过写作吗?

var select = group.Select(y => new MyResultDTO()
{
   ...
   TestName = y.Key.TestName  
});

此外,您可以为您的小组尝试这样的事情:

var group = query.Where(isSel=>isSel.isSelected).GroupBy(x => new
{
   ...
   TestName =  x.ClassA.Name 
})
.Union(query.Where(isSel=>!isSel.isSelected).GroupBy(x => new
{
   ...
   TestName = "" 
});

希望这会有所帮助

于 2013-01-29T13:05:05.447 回答