我有一個相對簡單的事情,我可以在SQL中輕鬆完成,但我試圖習慣使用Lambda表達式,並且很難。用Lambda表達式掙扎(VB .net)
這是一個簡單的例子。基本上我有2張桌子。
- tblAction(ActionID,ActionName)
- tblAudit(AuditID,ActionID,刪除)
tblAudit可能設置爲1
所有我刪除標誌的條目關於tblAction想要做的是選擇tblAudit中沒有刪除條目的操作。因此,SQL語句如下:
Select tblAction.*
From tblAction LEFT JOIN tblAudit on tblAction.ActionID=tblAudit.ActionID
where tblAudit.Deleted <> 1
在VB.Net的LINQ中,上述內容等價於什麼?我想:
Context.Actions.Where(Function(act) Context.Audit
.Where(Function(aud) aud.Deleted=False AndAlso aud.ActionID=act.ActionID)).ToList
但是,這是一個真正的內連接類型場景,它要求在tblAction每個條目也有tblAudit一個條目。我首先使用實體框架代碼來執行數據庫映射。有沒有一種方法可以用這種方式定義映射?
我不清楚什麼lambda表達式與此有關。也許你的意思是[Linq?](http://msdn.microsoft.com/zh-cn/vstudio/bb688088) – 2012-04-23 17:03:33
Razi,請查看[LINQPad](http://www.linqpad.net/)和[101 LINQ VB中的示例](http://msdn.microsoft.com/zh-cn/vstudio/bb688088)。 – 2012-04-23 18:32:39
Group Join將執行外連接。導航屬性(Action.Audits)也是如此。 – 2012-04-25 06:59:33