2013-11-20 2 views
0

Я использую linq для sql-запроса для извлечения записей из базы данных. Я использую запрос для привязки gridview.Графические записи с использованием linq to sql

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; 
      } 
     } 

и я получаю этот выход для того,

enter image description here

я Получать этот вывод для этого запроса, но я не хочу этого выхода, я хочу, как этот вывод.

CLIENTNAMEсобытие

Кетана 18

Monika 12

и другие записи так далее с помощью я получаю здесь имя клиента 9 раз и он создал событие, но я хочу некоторые из событий и имя клиента только один раз

означает, что я хочу только одно имя клиента и общее количество событий, я новичок в lin q до sql. Итак, каковы изменения в коде ..?

ответ

1

я нашел решение. here

ans также использовать вместе с этим. useful link

вот мое решение.

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(); 
1

, когда вы используете синтаксис объединения в запросе не нужно использовать «где» затем измените запрос:

var z = (from x in db.EMR_EVENTs 
        join y in db.EMR_CLIENTs on x.ClientID equals y.ClientID 
        select x.EventID).Count(); 
+0

спасибо за ваш ответ .. @ kamran, но он не работает ... я пытаюсь с этим. –

+0

У меня было общее количество событий, таких как ketan 30 monika 30 и т. Д. –

+0

Я так хочу, если ketan создаст 18 событий, тогда показывает ketan 18, а monika создаст 12 событий, а затем отобразит monika 12 .... не сумма его .. –

Смежные вопросы