2010-10-04 109 views
0

以下是我的SQL查询并希望处于LINQ中。任何人都可以帮忙吗?将SQL查询转换为LINQ

SELECT EmpId,Team,_Year FROM Plan 
where EmpId in 
(
    select EmpId from master where 2150 in (immediatesupervisor,manager) 
) 
+3

这是什么数据库?我不知道任何数据库的代码可以工作(尤其是在'immediatesupervisor,manager'位中的2150) – 2010-10-04 05:52:41

+2

忘记了LINQ,请先尝试并写入正确的SQL。 – RPM1984 2010-10-04 05:53:21

+0

@Dean它可能是SQL Server,因为问题标有'linq-to-sql'。如果_master_有一个名为_immediatesupervisor_的列和一个名为_manager_的SQL查询应该工作的列。它不应该有什么具体原因? – KristoferA 2010-10-04 07:01:26

回答

0

我建议你使用联接操作这样

YourDbEntities db = new YourDbEntities(); 

var query = from c in db.Plan 
      join d in db.master on c.EmpId equals d.EmpId 
      where d.ImmediateSupervisor == 2150 || d.Manager == 2150 

      select new{ 
       c.EmpId, 
       c.Team, 
       c._Year 
      }; 
+0

c#中不允许使用所有数字标识符。我认为'2150'是一个字面值,而不是一个成员。我假设_immediatesupervisor_和_manager_是表格成员...... – KristoferA 2010-10-04 06:57:35

+0

谢谢......我差点离开那个2150.我已经纠正了我的答案。 – Haekal 2010-10-04 07:27:21

0

尝试:

var q = 
from p in dc.Plan 
where (
    from m in dc.Master 
    where m.ImmediateSupervisor == 2150 
    || m.Manager == 2150 
    select m.EmpId 
).Contains(p.EmpId) 
select new { p.EmpId, p.Team, p._Year }; 

常用LINQ语法一个很好的资源是达明卫队的LINQ到SQL“作弊片'。这是一个单页,你可以快速查找这样的事情。请参阅http://damieng.com/blog/2009/08/12/linq-to-sql-cheat-sheet