这是我的代码:
public IList<VotacaoPlenario> RetornarVotacao(int mesInicio, int anoInicio)
{
DetachedCriteria criteria = DetachedCriteria.For<VotacaoPlenario>();
if (anoInicio > 0)
{
criteria.Add(Expression.Eq("YEAR(Data)", anoInicio));
}
IList<VotacaoPlenario> votacao = criteria.GetExecutableCriteria(Session).List<VotacaoPlenario>();
return votacao;
}
}
在我的表de field中数据是Datime我需要与变量anoInicio进行比较,这是int我该怎么做?
答案 0 :(得分:2)
这里的解决方案可能是使用SQL Projection:
var monthProjection = Projections
.SqlProjection(" MONTH(Data) as month " // the left side of the expression
, new[] {"month"} // alias
, new IType[] {NHibernateUtil.Int32}); // type is int
criteria.Add(Expression.Eq(monthProjection, anoInicio));
,生成的SQL看起来像这样
MONTH(Date) = @p1 //where p1 param is anaInicio