我正在尝试使用Criteria执行以下功能,但是它给了我一个运行时错误,指示SQL中的错误。
var query = session.CreateCriteria<TableName>()
.Add(Restrictions.Disjunction()
.Add(Restrictions.InsensitiveLike("Property1", keyword, MatchMode.Anywhere))
.Add(Restrictions.InsensitiveLike("Property2", keyword, MatchMode.Anywhere)));
query.SetProjection(Projections.Count(Projections.Distinct(
Projections.ProjectionList()
.Add(Projections.Property("Property1"))
.Add(Projections.Property("Property3"))
)));
表格映射如下所示:
public class TableName
{
public int Property1 {get;set;}
public int Property2 {get;set;}
public int Property3 {get;set;}
public int Property4 {get;set;}
}
我需要根据我的预测计算不同的结果,我不想将结果统计为整行!
有人可以帮我解决这个问题吗?
的 ---------- ---------- UPDATE 的
这就是我想要完成的事情:
select Count(*)
from
(
select distinct Property1 , Property2
from tableName
where Property1 like '%t%' or Property3 like '%t%'
) As x
答案 0 :(得分:0)
您的标准,如果它们可能被翻译,将产生如下的SQL:
SELECT count(DISTINCT Property1, Property3)
FROM TableName
WHERE Property1 LIKE '%keyword%' OR Property2 LIKE '%keyword%'
哪个不行。使用
Projections.RowCount() or Projections.RowCountInt64()
表示COUNT(*)等价物。 可能,GROUP BY子句是有意义的(而不是DISTINCT)。 (我希望您在使用LIKE&#39;%keyword%&#39;!; - )进行搜索时不需要Int64结果计数