簡體   English   中英

在C#中將SQL轉換為Linq

[英]Converting SQL to Linq in c#

我試圖將一些SQL代碼轉換為c#Linq:

SELECT Username, Count(Ticket.TicketId) as 'Tickets Completed'
FROM  Ticket
INNER JOIN TicketStatus ON Ticket.TicketStatusID = TicketStatus.TicketStatusID
INNER JOIN Membership ON Ticket.CompletedBy = Membership.UserId
WHERE Ticket.ClosedDate >= @StartDate
      and Ticket.ClosedDate <= @EndDate
GROUP BY Username
ORDER BY 'Tickets Completed' DESC

顯示

Paul    6
Mike    4
Donna   3
Elliot  2

我嘗試使用Linqer,這使事情變得更加復雜,並且沒有返回任何結果:

var query = from Ticket in data.Tickets
                join Membership in data.Memberships on new { CompletedBy = Guid.Parse(Ticket.CompletedBy.ToString()) } equals new { CompletedBy = Membership.UserId }
                where
                  Ticket.ClosedDate >= StartDate &&
                  Ticket.ClosedDate <= EndDate
                group new { Membership, Ticket } by new
                {
                    Membership.Username
                } into g
                orderby
                  "Tickets Completed" descending
                select new
                {
                    Username = g.Key.Username,
                    Completed = g.Count(p => p.Ticket.TicketID > 0)
                };

您的幫助將不勝感激。

謝謝

假設CompletedByUserId列在數據庫中都是uniqueidentifier ,則不需要進行任何類型轉換。

var query = from t in db.ticket
        join ts in db.ticketStatus 
        on t.TicketStatus.ID equals ts.TicketStatusID
        join m in db.Membership 
        on t.CompletedBy equals m.UserId
        where t.ClosedDate >= startDate 
             && t.closedDate <= endDate
        group  t by m.UserName into tGroup
        order by tGroup.Count(t=> t.TicketId) decending
        select new {
          UserName = tGroup.Key,
          TicketCount = tGroup.Count()
        };

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM