2011-06-15 7 views
3

J'ai une question comment écrire une expression lambda, je l'ai travaillé dans une comme requête MSSQL ceci:Lambda expression aide

SELECT KUNDNR 
FROM halldb.dbo.KUND 
wWHERE NOT EXISTS 
(
    SELECT KundID 
    FROM halldb.dbo.KundInfo 
    WHERE KUNDNR = CONVERT(Varchar(50), KundInfo.KundID) 
) 
ORDER BY KUNDNR 

Et ce que je tentais en utilisant l'expression lambda était le suivant:

db.KUNDs.Select(x => x).Except(db.KundInfos.Select(x => x)); 

Mais depuis kunds et KundInfo est deux différents types d'objets qui ne vais pas travailler ... Je pourrais continuer comme ça:

db.KUNDs.Select(x => x.KUNDNR).Except(db.KundInfos.Select(x => x.KundID.ToString())); 

Mais cela me donnerait juste une liste avec des chaînes avec KUNDs.KUNDNR quand j'aimerais vraiment avoir une liste avec les objets de KUNDs.

Comment puis-je faire cela?

L'aide serait très appréciée!

Répondre

9
db.KUNDs.Where(k => !db.KundInfos.Any(ki => k.KUNDNR == ki.KundID.ToString())) 
     .OrderBy(k => k.KUNDNR); 
+0

qui jette une erreur « bool» ne contient pas de définition pour « OrderBy » et aucune méthode d'extension « OrderBy » accepter un premier argument de type « bool » est introuvable » – Andreas

+0

Il y avait une parenthèse fermante manquante avant '.OrderBy (k => k.KUNDNR)'. Désolé pour cela, le 'OrderBy (' devrait être appliqué au résultat de 'Where ('. – manji

+0

Yup je viens de le faire fonctionner après avoir remarqué votre réponse, merci beaucoup pour l'aide que j'ai lutté avec cela pour toujours et à jamais! – Andreas