我有两个表,订阅和主题。每个订阅都与一个特定的 TopicID(主题表的 PK)相关。第一个查询工作正常并检索今天上传的所有视频的主题 ID。

当我尝试然后将 query1 的结果用作查询 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))}
对此的任何见解将不胜感激。我在网上查看了一些样本,它们似乎都与我的相同。

最佳答案

您可能需要 ToList() 您的第一个查询,以便它确实被执行。

关于c# - Linq to SQL Where In 子句导致对象未设置为对象的实例,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3154528/

10-11 23:02
查看更多