私はSQLで次のクエリを実行しようとしています:
select r.*,
(select SUM(c.quantidade - c.quantidadeproduzida)
from pcp_trabalho c
where c.id_recurso = r.id_recurso
and c.st_trabalho = 1) alocado,
(select SUM(c.quantidade - c.quantidadeproduzida)
from pcp_trabalho c
where c.id_recurso = r.id_recurso
and c.st_trabalho = 2) programado
from pcp_recurso r
st_trabalhoは私のプロジェクトの列挙型です。
私はそれを試しました:
rv = (from r in SessionManager.GetSession().Query<RecursoCorteCircuito>()
select new RecursoView
(
r,
SessionManager.GetSession().Query<TrabalhoCorteCircuito>().Where(t => t.Recurso.Id == r.Id && t.Status == TrabalhoStatus.Alocado).Sum(t => t.Quantidade - t.QuantidadeProduzida),
SessionManager.GetSession().Query<TrabalhoCorteCircuito>().Where(t => t.Recurso.Id == r.Id && t.Status == TrabalhoStatus.Programado).Sum(t => t.Quantidade - t.QuantidadeProduzida)
)).ToList();
ただし、たとえば、がをSessionManager.GetSession().Query<TrabalhoCorteCircuito>().Where(t => t.Recurso.Id == r.Id && t.Status == TrabalhoStatus.Alocado)
返した場合nothing
、つまりステータスが「Alocados」の「Trabalhos」がない場合、クエリはNullExceptionを返すため、sum(t => t.Quantidade --t.QuantidadeProduzida)を実行できません。
どうすればそれを機能させることができますか?