会感激不尽。
首先介绍: 是两个表/对象:
OFFICE
{officeID,
NAME,
another data}
WORKER
{ID,
officeID,
NAME}
每个办公室都有n个办公室和m个工人。 (我们不知道确切的数字,我们也不需要它们)
我知道WORKER NAME
,我必须让所有OFFICES
至少有一名工人拥有这样的名称。
所以, SQL会像这样:
SELECT * FROM OFFICE WHERE officeID = (SELECT officeID FROM WORKER where NAME='myName');
(也许可能是另一个,我不确定)
是的,有人可以帮助我使用类型:OFFICES
,WORKER
,lambda表达式和IQueryable吗?
答案 0 :(得分:2)
您使用的是导航属性吗?如果是这样,那么您可以利用这些并执行以下两个查询中的任何一个:
context.Office.Where(o => o.Workers.Any(w => w.Name == "myName"));
或
context.Workers.Where(w => w.Name == "myName").Select(w => w.Office).Distinct();
答案 1 :(得分:1)
您的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>();