2011-03-26 87 views
0

這個linq查詢有效嗎?這是linq查詢有效嗎?

var qry = ((from member in this.ObjectContext.TreeMembers.Where(m => m.UserId == userId && m.Birthdate == null) 
       select member.TreeMemberId).Except(from item in this.ObjectContext.FamilyEvents select item.TreeMemberId)); 


    var mainQry = from mainMember in this.ObjectContext.TreeMembers 
        where qry.Contains(mainMember.TreeMemberId) 
        select mainMember; 

這會被翻譯成多個SQL調用或只是一個?可以優化嗎?基本上我有2個表,我想要從table1中選擇那些日期時間爲空的記錄,並且該記錄不應該存在於表2中。

+1

你爲什麼不執行它,看看? – Jon 2011-03-26 12:48:02

+1

當人們將StackOverflow視爲他們個人化的編譯器時,我討厭它。 – 2011-03-26 12:48:31

+0

@Martinho Fernandes: - +1。讀完您的評論後,我會說部分你是對的。感謝您將此通知給我。 – TCM 2011-03-26 13:01:01

回答

1

查明查詢是否會進行多次調用的最簡單方法是設置數據上下文的.Log屬性。我通常將其設置爲寫入DebugOutputWriter。這種類的一個很好的例子可以找到here

但是,對於一般的思維方式,如果您使用的類的屬性不直接映射到where子句或連接子句中的數據庫字段,則通常會進行多次調用。從你提供的,看起來像這是而不是你的情況,但我不能絕對肯定,並建議使用上面列出的方法。

+0

- 哇!好的回答和關於不映射到數據庫的自定義屬性的提示。是的,你寫這是不是在我的情況。 – TCM 2011-03-26 12:59:36