Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/31.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net 使用linq to sql统计结果记录_Asp.net_Sql Server 2008_C# 4.0_Linq To Sql_Count - Fatal编程技术网

Asp.net 使用linq to sql统计结果记录

Asp.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

我使用linq到sql查询从数据库检索记录。 我使用一个查询来绑定gridview

   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…不是总数。。