Narazana
Narazana

Reputation: 1950

LINQ to SQL join two tables to select parent table twice based on two different columns from child table

I'd like to get suggestion in both C# and VB.NET

I have two tables Employees and CafeLogs. Some employees can be cashiers and also customers at the Cafe shop.

Table structures:

Table relationship:

Employees table data:

EmployeeId, FirstName, LastName

Wanted Result :I want to show both Cashier name and Employee name like this from one query:

Upvotes: 1

Views: 3215

Answers (1)

Jeff Mercado
Jeff Mercado

Reputation: 134811

This should do it in C#:

var query = from log in db.CafeLogs
            join emp in db.Employees on log.EmployeeId equals emp.EmployeeId
            join cas in db.Employees on log.CashierId  equals cas.EmployeeId
            select new
            {
                log.LogId,
                Employee  = emp.FirstName + " " + emp.LastName,
                ChargedBy = cas.FirstName + " " + cas.LastName,
                log.Value
            };

and the VB version:

Dim query = From log In db.CafeLogs                                          _
            Join emp In db.Employees On log.EmployeeId Equals emp.EmployeeId _
            Join cas In db.Employees On log.CashierId  Equals cas.EmployeeId _
            Select                                                           _
                log.LogId,                                                   _
                Employee  = emp.FirstName & " " & emp.LastName,              _
                ChargedBy = cas.FirstName & " " & cas.LastName,              _
                log.Value

Upvotes: 6

Related Questions