我正在创建一个网络API。我有两张桌子
Employee_details
SlNo Employeeid R_ID
1 2022 AC1
2 2023 AC2
Id_details
SlNo R_ID L_ID
1 AC1 L001
2 AC1 L002
3 AC1 L003
4 AC2 L004
5 AC2 L005
我使用RESTful服务创建了一个web api。我需要获取特定Employeeid的所有L_ID。例如,如果我请求employeeid 2022,我应该得到L001 L002和L003。请帮帮我。我首先使用代码创建表并启用迁移
代码
模型类
Employee_details.cs
public class Employee_details
{
public int slNo {get; set;}
public string Employeeid {get; set;}
public string R_ID {get; set;}
//Navigation
public Id_details Id_details{get; set;}
}
Id_details.cs
public class Id_details
{
public int slNo {get; set;}
public string R_ID {get; set;}
public string L_ID {get; set;}
}
控制器
public IQueryable<Employee_id> Getdetails(string employeeid )
{
return db.Employee_details
.Where(b => b.Employeeid.Equals(employeeid, StringComparison.OrdinalIgnoreCase)).Include(c => c.Id_details);
}
由于表2中的R_ID字段不是主键,因此我没有进行外键引用。
答案 0 :(得分:0)
如果使用Native SQL,则此查询是您的返回数据。
SELECT ID.L_ID
FROM Id_details AS ID
INNER JOIN Employee_details ED
ON ID.R_ID = ED.R_ID
WHERE ED.Employeeid = '2022'
或者如果您使用EntitiyFramework
此查询返回equel R_ID记录,然后设置Employee_details条件
var res = db.Id_details.Join(db.Employee_details, x => x.R_ID , y => y.R_ID , (x, y) => x).ToList();
或者您可以选择containsList
中的任何R_IDvar conditionList =db.Employee_details.where(p=>p.Employeeid.equals('2022')).select(p=>p.R_ID);
然后使用conditionList search
设置条件 db.Id_details.where(p=> conditionList.contains(p.R_ID)).select ( ... );