Asp.net 使用linq to sql统计结果记录
我使用linq到sql查询从数据库检索记录。 我使用一个查询来绑定gridviewAsp.net 使用linq to sql统计结果记录,asp.net,sql-server-2008,c#-4.0,linq-to-sql,count,Asp.net,Sql Server 2008,C# 4.0,Linq To Sql,Count,我使用linq到sql查询从数据库检索记录。 我使用一个查询来绑定gridview protected void grdBind() { try { EventManagerDataContext db = new EventManagerDataContext(); var z = (from x in db.EMR_EVENTs
protected void grdBind()
{
try
{
EventManagerDataContext db = new EventManagerDataContext();
var z = (from x in db.EMR_EVENTs
join y in db.EMR_CLIENTs on x.ClientID equals y.ClientID
where y.ClientID==x.EventID
select x.EventID).Count();
var q = from a in db.EMR_CLIENTs
join b in db.EMR_EVENTs on a.ClientID equals b.ClientID
join c in db.EMR_ACCOUNTs on a.ClientID equals c.ClientID
join d in db.EMR_SUBSCRIPTIONs on c.Account_ID equals d.Account_ID
join f in db.EMR_SUBSCRIPTION_KINDs on d.Subscription_kind_ID equals f.Subscription_kind_ID
select new
{
Customer = a.Name,
Events = z,
TurnOver = f.Monthly_Fee,
StartDate = d.Start_Date,
EndDate = d.End_Date,
CreteDate = d.Create_Date,
ClientID = a.ClientID,
EventID = b.EventID,
SubscriptionID = d.Subscription_ID,
Subscription_kind_ID=f.Subscription_kind_ID,
Account_ID=c.Account_ID,
};
grid.DataSource = q.ToList();
grid.PageSize = int.Parse(drpPageSize.SelectedValue);
grid.DataBind();
}
catch
{
throw;
}
}
我收到了这个输出
我收到此查询的输出,但我不想要此输出,
我想要这样的输出
客户端名称事件
克滩18
莫妮卡12
其他的记录意味着我在这里收到了9次客户名称,他创建了一些事件,但我只想要一些事件和客户名称一次
意味着我只需要一个客户机名称和事件总数,我是LINQtoSQL的新手。
那么代码有什么变化?在查询中使用连接语法时,不需要使用“where” 然后将查询更改为:
var z = (from x in db.EMR_EVENTs
join y in db.EMR_CLIENTs on x.ClientID equals y.ClientID
select x.EventID).Count();
我找到了解决办法
ans也用于此
这是我的解决办法
EventManagerDataContext db = new EventManagerDataContext();
var q = from a in db.EMR_CLIENTs
join b in db.EMR_EVENTs on a.ClientID equals b.ClientID into z
join c in db.EMR_ACCOUNTs on a.ClientID equals c.ClientID
join d in db.EMR_SUBSCRIPTIONs on c.Account_ID equals d.Account_ID
join f in db.EMR_SUBSCRIPTION_KINDs on d.Subscription_kind_ID equals f.Subscription_kind_ID
select new
{
Customer = a.Name,
Events =z.Where(b =>b.ClientID==a.ClientID).Count(),
TurnOver = f.Monthly_Fee,
StartDate = d.Start_Date,
EndDate = d.End_Date,
CreteDate = d.Create_Date,
ClientID = a.ClientID,
SubscriptionID = d.Subscription_ID,
Subscription_kind_ID=f.Subscription_kind_ID,
Account_ID=c.Account_ID,
};
grid.DataSource = q.ToList();
谢谢你的回复。@kamran但它不起作用…我试着用这个。我得到了像ketan 30 monika 30这样的事件总数,所以我想这样,如果ketan创建18个事件,然后显示ketan 18,monika创建12个事件,然后显示monika 12…不是总数。。