0

如果有人能帮我把它翻译成 lambda 表达式或类似的东西,我会很高兴。

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

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');

(也许是另一个,我不确定)

只是,有人可以帮助我使用lambda 表达式和 IQueryable的 types: OFFICES, , 来获得相同的结果吗?WORKER

4

2 回答 2

2

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

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

或者

context.Workers.Where(w => w.Name == "myName").Select(w => w.Office).Distinct();
于 2013-01-08T20:00:41.753 回答
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>();
于 2013-01-08T19:47:33.090 回答