linq 如何根据另一个表中的值从表中获取数据(sql、ADO.Net)

ghhaqwfi  于 2022-12-06  发布在  .NET
关注(0)|答案(1)|浏览(161)

在下面的示例中,我根据其他表中的值从表中选择数据。这些表彼此之间有关系。
我在Visual Studio中使用ADO.NET和Linq编写了C#代码。有没有更好的方法来获取数据?
从第一个表获取ID:

var positionID = (from p in db.Employees 
                  where p.FIO == FIO 
                  select p.Position_Id).First();

根据第一个表中的值从第二个表中获取代码

var AccessCODE = (from p in db.Positions 
                  where p.Id == positionID 
                  select p.Access_Code).First();

根据第二个表中值返回第三个表中的数据

return (from p in db.AvailableModuls 
        where p.Access_Code == AccessCODE 
        select p.Available_Modul).ToList();

Model diagram screen

eyh26e7m

eyh26e7m1#

最好在单个查询中写入所有内容:

var query = 
    from e in db.Employees
    where e.FIO == FIO
    join p in db.Positions on e.Position_Id equals p.Id 
    join m in db.AvailableModuls on p.Access_Code equals m.Access_Code
    select m.Available_Modul;

return query.ToList();

请注意,如果您有适当的导览属性,就不需要链接。

相关问题