C# 如何将Count(*)与DAL2一起使用?

C# 如何将Count(*)与DAL2一起使用?,c#,sql,dotnetnuke,data-access-layer,petapoco,C#,Sql,Dotnetnuke,Data Access Layer,Petapoco,我想获得一些表中各种数据分组的计数,但不确定是否可以使用DAL2 我希望执行以下查询: SELECT DISTINCT productType, COUNT(*) FROM Products GROUP BY productType 我遇到的信息仅包括允许用户指定SQL的WHERE部分的示例。不幸的是,这个例子忽略了查询的WHERE部分,所以我不确定应该如何使用DAL2来实现这一点。是否可以使用DAL2,或者我需要以另一种方式查询数据库?如果可以使用DAL2进行查询,我如何执行这样的查询?我

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

我希望执行以下查询:

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

我遇到的信息仅包括允许用户指定SQL的WHERE部分的示例。不幸的是,这个例子忽略了查询的WHERE部分,所以我不确定应该如何使用DAL2来实现这一点。是否可以使用DAL2,或者我需要以另一种方式查询数据库?如果可以使用DAL2进行查询,我如何执行这样的查询?

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


我很想听听其他成员对此的看法。

仅显示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");
公共类ProductCount{
public int ProductType{get;set;}
公共整数计数{get;set;}
}
var ProductCountList=db.Fetch(@“选择不同的产品类型,
计数(*)作为计数
来自产品
按产品类型分组);

谢谢爱德华多。看起来这是正确的解决方案,但是在我的代码中,我使用IDataContext对象与数据库交互。我对IDataContext对象中的.ExecuteQuery()使用了类似的技术,它似乎正在工作。我正在使用的对象没有.Fetch()。这里的“db”是什么类型的对象?我说的是PetaPoco。我听说DAL2是基于PetaPoco的。也许您有
Query()
功能谢谢。如果人们使用.ExecuteQuery(),这就是答案。我在评论中的问题是针对您的示例中变量“db”的对象类型的。声明是什么样子的?比如
var db=new PetaPoco.Database(connectionString)