2011-06-15 67 views
3

我有一个问题如何写一个lambda表达式,我有它的MSSQL的查询工作是这样的:Lambda表达式帮助

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 

什么用lambda表达式我试图是这样的:

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

但由于KUNDs和KundInfo是两种不同的是不会工作的对象......我可以是这样的:

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

但是,那只会给我一个带有KUNDs.KUNDNR的字符串的列表,当我真的想要返回带有KUNDs对象的列表时。

我该怎么做?

帮助将不胜感激!

回答

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

即会引发错误“‘布尔’不包含关于‘排序依据’的定义和没有扩展方法‘的OrderBy’接受类型‘布尔’的第一个参数可以发现” – Andreas 2011-06-15 12:57:08

+0

有一个丢失右括号在'.OrderBy(k => k.KUNDNR)'之前。对不起,'OrderBy('应该应用于'Where'的结果('。 – manji 2011-06-15 13:02:57

+0

是的,我刚注意到你的回复后才开始工作,thanx很多帮助我一直在为此而苦苦挣扎! – Andreas 2011-06-15 13:07:18