[英]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 我想在C#和VB.NET中都得到建议
I have two tables Employees and CafeLogs. 我有两个表Employees和CafeLogs。 Some employees can be cashiers and also customers at the Cafe shop. 一些员工可以是收银员,也可以是Cafe商店的客户。
Table structures: 表结构:
Table relationship: 表关系:
Employees table data: 员工表数据:
EmployeeId, FirstName, LastName EmployeeId,FirstName,LastName
5, Brown , Lexus 5,布朗,雷克萨斯
CafeLogs table data: CafeLogs表数据:
LogId, CashierId, EmployeeId, Value LogId,CashierId,EmployeeId,值
Wanted Result :I want to show both Cashier name and Employee name like this from one query: 想要的结果 :我想通过一个查询同时显示出纳员姓名和员工姓名:
7 , Steven Gerald, Lours John, 1 7,史蒂芬·杰拉尔德,罗尔斯·约翰,1
Right now I know how to select only LogId, Employee's name, and , Value, not with Cashier name yet. 现在,我知道如何仅选择LogId,员工姓名和值,而不选择收银员姓名。
Dim query = From log In db.CafeLogs _ Join emp In db.Employees On emp.EmployeeId Equals log.EmployeeId _ Select log.LogId, emp.FirsName, emp.LastName, log.Value
This should do it in C#: 这应该在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: 和VB版本:
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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.