如何在DAL2中使用Count(*)?

时间:2013-12-20 20:02:21

标签: c# sql dotnetnuke data-access-layer petapoco

我想在某些表中获取各种数据分组的计数,但我不确定是否可以使用DAL2。

我想执行以下查询:

SELECT  DISTINCT productType, COUNT(*) FROM Products GROUP BY productType

我遇到的信息仅包含允许用户指定SQL的WHERE部分的示例。不幸的是,这个例子围绕着查询的WHERE部分,因此我不确定如何使用DAL2来解决这个问题。是否可以使用DAL2或我需要以另一种方式查询数据库?如果可以使用DAL2完成,我该如何执行这样的查询?

2 个答案:

答案 0 :(得分:3)

仅显示WHERE部分的示例意味着PetaPoco会为您填写"SELECT * FROM TableName"部分,但当然您可以执行自己的sql语句

在你的情况下:

public class ProductCount {
   public int ProductType {get; set;}
   public int Count {get; set;}
}

var ProductCountList = db.Fetch<ProductCount>(@"SELECT DISTINCT productType, 
        COUNT(*) as Count 
        FROM Products 
        GROUP BY productType");

答案 1 :(得分:0)

我无法告诉你什么是最佳做法。但我有一个SQL服务器后端,并使用dal2与dnn模块。我刚刚在SQL服务器中使用我的分组和连接创建了一个视图,然后将该视图映射为一个表(在类注释中使用视图名而不是表名),自动增量为false。为我工作,我获得了预编译和非动态查询的好处。如果你需要动态生成它,我不确定最好的方法是什么。

我很乐意听取其他成员的意见。