2011-06-15 65 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