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

时间:2013-01-08 19:43:35

标签: c# lambda iqueryable

如果有人能帮助我将其翻译成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');

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

是的,有人可以帮助我使用类型:OFFICESWORKER,lambda表达式和IQueryable吗?

2 个答案:

答案 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>();