C# ';在'&';不在';在Linq查询中

C# ';在'&';不在';在Linq查询中,c#,linq,entity-framework,entity-framework-4,linq-to-entities,C#,Linq,Entity Framework,Entity Framework 4,Linq To Entities,我已经在LINQPad中测试了以下查询,它运行良好,但VS2010不喜欢它 var topJobs = from j in streetlightDBEntities.Job let mjobid = from m in streetlightDBEntities.Job.Include("Streetlight") where m.Streetlight.StreetlightId == j.Streetlight.StreetlightId

我已经在LINQPad中测试了以下查询,它运行良好,但VS2010不喜欢它

var topJobs = from j in streetlightDBEntities.Job
    let mjobid = from m in streetlightDBEntities.Job.Include("Streetlight")
                 where m.Streetlight.StreetlightId == j.Streetlight.StreetlightId
                 orderby m.DateCompleted descending
                 select m.JobId
        where mjobid.Take(5).Contains(j.JobId)
        select j.JobId;

var notTopJobs = streetlightDBEntities.Job.Where(c => !topJobs.Contains(c.JobId));
我得到了以下错误:

LINQ to Entities无法识别方法“Boolean Contains[String](System.LINQ.IQueryable`1[System.String],System.String)”方法,并且无法将此方法转换为存储表达式

使用

与此相反:

var notTopJobs = streetlightDBEntities
      .Job
      .Where(c => !topJobs.Contains(c.JobId));
这样做:

var notTopJobs = streetlightDBEntities
      .Job
      .Where(c => !topJobs.Any(x => x.JobId == c.JobId))

对原始查询执行相同的操作

您的目标是.NET 3.5还是.NET 4.0?x.JobId出现错误:“string”不包含“JobId”的定义,并且找不到接受“string”类型的第一个参数的扩展方法“JobId”。那么,新的第一个查询就错了。我基于您最初选择的查询
topJobs
,该查询选择了
JobId
。您的
topTops
查询是否在选择/投影中返回
JobId