Conditional Group By and Select using Linq (NHibernate)

本文关键字:Linq NHibernate using Select Group By and Conditional | 更新日期: 2023-09-27 17:56:33

我有那个查询:

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 子句中。

但是,如果我将我的组由更改为仅(采取条件从句):

TestName = x.ClassA.Name 

它工作正常...知道我该怎么做那个二分法的分组/选择吗?

我正在使用 NHibernate 3.3.1

保罗

Conditional Group By and Select using Linq (NHibernate)

不确定你想要实现什么,但你试过写作吗?

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 = "" 
});

希望这会有所帮助