c#将SQL转换为lambda表达式以获得IQueryable

本文关键字:IQueryable 表达式 lambda SQL 转换 | 更新日期: 2023-09-27 17:50:59

如果有人能帮我把它翻译成lambda表达式或类似的东西,那就太好了。

首先简介:是两个表/对象:

OFFICE 
{officeID,
 NAME,
 another data}
WORKER
{ID,
 officeID,
 NAME}

有n个办公室,每个办公室有m个工人。(我们不知道确切的数字,也不需要)

我知道WORKER NAME,我必须得到所有OFFICES,其中至少有一个具有这种NAME的工人。

,SQL将是这样的:

SELECT * FROM OFFICE WHERE officeID = (SELECT officeID FROM WORKER where NAME='myName');

(可能是另一个,我不确定)

只是,有人可以帮助我得到相同的使用类型:OFFICES, WORKER,与lambda表达式和iquerable ?

c#将SQL转换为lambda表达式以获得IQueryable

是否使用导航属性?如果是这样,那么您可以利用这些并执行以下两个查询之一:

context.Office.Where(o => o.Workers.Any(w => w.Name == "myName"));

context.Workers.Where(w => w.Name == "myName").Select(w => w.Office).Distinct();

您的SQL查询应该使用JOIN。

那么你的lambda表达式看起来就像:

var result = (from o in context.Offices
              join w in context.Workers
              on o.officeID equals w.officeID
              where w.Name.Equals("myName")
              select o).AsQueryable<Office>();