簡體   English   中英

LINQ,帶有count和orderby的雙重聯接

[英]LINQ, double join with count and orderby

LINQ新手在查詢中掙扎,這在常規SQL中非常容易,但是由於某種原因,在嘗試使用lambda / query進行表達時,我感到非常痛苦。

我有三個對象:組織

public class Organization
{
    public int OrganizationId { get; set; }
    public ICollection<Employee> Employees { get; set; }
}

雇員

public class Employee
{
    public int EmployeeId { get; set; }
    public Organization Organization { get; set; }
    public ICollection<Ticket> Tickets { get; set; }
}

public class Ticket
{
    public int TicketId { get; set; }
    public Employee Employee { get; set; }
}

使用LINQ,我需要按組織的票證數量來檢索組織的有序列表,作為IQueryable,它是可取的。

到目前為止,這是我想出的:

var q = Organizations.Join
                    (
                        Employees,
                        org => org.OrganizationId,
                        emp => emp.Organization.OrganizationId,
                        (org, emp) => new {org, emp}
                    )
                    .Join
                    (
                        Tickets,
                        t => t.emp.EmployeeId,
                        ticket => ticket.Employee.EmployeeId,
                        (t, ticket) => new {t, ticket}
                    )
                    .GroupBy(t => t.t.org.OrganizationId)
                    .Select
                    (
                        t => new { OrganizationId = t.Key, TCount = t.Count() }
                    )
                    .OrderByDescending(t => t.TCount).Dump()

所以我有組織的ID和數量。 我將如何檢索整個組織對象?

您不需要使用join,因為每個類都有集合。

Organizations.OrderByDescending(o => o.Employees.Sum(e => e.Tickets.Count()));

暫無
暫無

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

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