3
我有兩個表,訂閱和主題。每個訂閱都與特定的TopicID(主題表的PK)相關。第一個查詢工作正常,並檢索今天上傳的所有視頻的topicID。Linq to SQL where子句原因對象未設置爲對象的實例
當我嘗試然後使用查詢1的結果作爲查詢2的where-in子句時,會出現問題。我一直在接收未設置爲對象實例的對象引用。
查詢1
IQueryable<int> topics = (from t in dataLayer.Videos
where SqlMethods.DateDiffDay(t.DateCreated, DateTime.Today) == 0
select t.TopicID).Distinct();
查詢2(失敗)
IQueryable<Subscription> subs = from s in dataLayer.Subscriptions
where topics.Contains(s.TopicID)
select s;
失敗時生成LINQ查詢是{Table(Subscription).Where(s => value(EmailSubscribers+<>c__DisplayClass0).topics.Contains(s.TopicID))}
任何深入瞭解這將不勝感激。我看過網上的一些樣品,它們看起來都和我的相同。
輝煌的Graphain。像冠軍一樣工作。任何想法爲什麼它不起作用,如果第一個查詢沒有.ToList()? – zhx 2010-07-01 01:41:55
由於LINQ to SQL是後期綁定 - 獲取數據的SQL調用會盡可能延遲。如果你要遍歷第一個查詢,它會進行調用,但在此之前它會一直持續下去,直到你「需要」爲止。 ToList()強制迭代並進行該調用。有趣的是,第二個查詢不會遍歷第一個查詢,但現在您知道原因了。 – 2010-07-01 01:53:54
太棒了。謝謝你的解釋。我現在明白了:-) – zhx 2010-07-01 01:59:17