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 ?
是否使用导航属性?如果是这样,那么您可以利用这些并执行以下两个查询之一:
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>();