2010-10-04 6 views
0

Le message ci-dessous est ma requête SQL et souhaite être dans LINQ. Quelqu'un peut-il aider pour cela?Convertir une requête SQL en LINQ

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

Quelle base de données est-ce? Je ne connais aucune base de données où ce code fonctionnerait (en particulier le 'où 2150 dans (immédiat, superviseur, gestionnaire)' bit) –

+2

oublier LINQ, essayez d'écrire le bon SQL d'abord. – RPM1984

+0

@Dean c'est probablement SQL Server puisque la question est taguée 'linq-to-sql'. Si _master_ a une colonne nommée _immediatesupervisor_ et une colonne nommée _manager_ que la requête SQL devrait fonctionner. Une raison spécifique, il ne devrait pas? – KristoferA

Répondre

0

Je vous suggère d'utiliser se joindre à l'opération comme celui-ci

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

Tous les identifiants numériques ne sont pas autorisés dans C#. Je pense que '2150' est une valeur littérale plutôt qu'un membre. Je suppose que _immediatesupervisor_ et _manager_ sont des membres de la table ... – KristoferA

+0

merci ... J'ai presque quitté à propos de ce 2150. J'ai correct ma réponse. – Haekal

0

Essayez:

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 }; 

Une excellente ressource pour couramment utilisé la syntaxe LINQ est LINQ to SQL triche » de Damien Garde drap'. C'est un one-pager où vous pouvez rapidement rechercher des choses comme ceci. Voir http://damieng.com/blog/2009/08/12/linq-to-sql-cheat-sheet