使用Linq(NHibernate)的条件组By和Select

时间:2013-01-29 12:30:02

标签: c# linq nhibernate

我有这个问题:

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(采用condicional子句):

TestName = x.ClassA.Name 

工作正常...... 任何想法我怎么能做那个condicional GroupBy / Select?

我正在使用NHibernate 3.3.1

1 个答案:

答案 0 :(得分: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 = "" 
});

希望这会有所帮助