gpt4 book ai didi

c# - LINQ to SQL 连接两个表以根据子表中的两个不同列选择父表两次

转载 作者:太空宇宙 更新时间:2023-11-03 19:33:32 25 4
gpt4 key购买 nike

我想在 C# 和 VB.NET 中获得建议

我有两个表 Employees 和 CafeLogs。一些员工可以是收银员,也可以是咖啡馆的顾客。

表结构:

  • 员工:EmployeeId(PK) , FirstName, LastName
  • CafeLogs: LogId (PK), CashierId, EmployeeId, Value, => CashierId 和 EmployeeId 是来自 Empoyee 表的 EmployeeId 列的数据

表关系:

  • 员工 1:N CafeLogs (CashierId (FK))

员工表数据:

员工 ID、名字、姓氏

  • 1 , 史蒂夫 , 马克斯
  • 2 , 路易斯 , 约翰
  • 3 , 斯科特 , 乔
  • 4,史蒂文,杰拉德
  • 5,布朗,雷克萨斯

    CafeLogs 表数据:

    LogId、CashierId、EmployeeId、值

    • 1、2、3、9
    • 2、3、4、12
    • 3、2、5、8
    • 4、3、1、4
    • 5、3、1、2
    • 6、2、5、9
    • 7 , 2 , 4 , 1

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

  • LogId、员工、收费者、值(value)
  • 1 岁,Scoot Joe,Louis John,9 岁
  • 2,Steven Gerald,Scoot Joe,12 岁
  • 3 , Brown Lexus, Louis John, 8
  • 4 , Steve Marks, Scoot Joe, 4
  • 5,Steve Marks,Scoot Joe,2
  • 6 岁,棕色雷克萨斯,路易斯约翰,9 岁
  • 7,史蒂文·杰拉德,劳斯·约翰,1

    现在我知道如何只选择 LogId、Employee's name 和 Value,而不是 Cashier name。

     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

最佳答案

这应该在 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
};

和 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

关于c# - LINQ to SQL 连接两个表以根据子表中的两个不同列选择父表两次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3545149/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com