2017-08-17 116 views
0
select 
    t.Ticketid, t.subject, t.createdby, 
    count(TicketConversationId) as counts 
from 
    dbo.ticket t 
join 
    dbo.TicketConversation tc on t.ticketid = tc.ticketid 
group by 
    t.Ticketid, t.subject, t.createdby 

代码:如何下面的SQL查询转换为LINQ查询在C#

var Result = from t1 in Tickets 
      join t2 in TicketConversations on t1.TicketId equals t2.TicketId 
      select new { t1.TicketId, t1.Subject , comments = t2.TicketConversationId }; 
+1

请为提供一些LINQ尝试你正在尝试做 –

+0

还有你是什么数使用? EF? –

+0

是的,它使用的是EF –

回答

1

好所以要加计数和分组为您的查询使用GroupBy

var result = from t1 in Tickets 
      join t2 in TicketConversations on t1.TicketId equals t2.TicketId 
      group t2.TicketConversationId by new { t.Ticketid, t.Subject, t.createdby } into g 
      select new { 
       t1.TicketId, 
       t1.Subject , 
       t1.CreatedBy, 
       Count = g.Count() }; 

请注意,在使用EF时,如果您正确定义了Navigation Properties,则不需要明确写入连接,而只需要t1.Conversations.Count()或类似。


因为所有你需要的是来计算记录在t2匹配,您可以使用group join

var result = from t1 in Tickets 
      join t2 in TicketConversations on t1.TicketId equals t2.TicketId into con 
      select new { 
       t1.TicketId, 
       t1.Subject, 
       t1.CreatedBy, 
       Count = con.Count() 
      }; 
+0

感谢您解决了问题 –

+0

@SukhenduChakraborty - 如果这有助于您解决问题,请考虑将问题标记为已解决 –