检查查询是否包含列表中的内容

问题描述:

作为查询的结果,我希望让所有不在列表中的董事通过与董事的List发送。但我不知道如何解决这个问题。我已经尝试过Contains和其他一些东西。检查查询是否包含列表中的内容

不知道该怎么做。

public List<MovieDirector> GetDirectorsPossibleForMovie(int MovieID, List<Director> director) 
{ 
    List<MovieDirector> directors = 
    (from item in db.MovieDirectors where item.MovieId != MovieID && item.Director != director orderby item.Director.Lastname select item).ToList<MovieDirector>(); 
    return directors; 
} 

附加信息:数据库MovieDirectorMovie有联系,但也MovieDirectorDirector

谢谢!

+1

你说你想要导演,但是你的方法会返回MovieDirectors。哪一个? –

@如果MovieDirector类有它的散列码,等于树立正确的方法Enigmativity的答案可能会奏效,但它会拉扯,几乎所有的MovieDirector对象从数据库中,只有丢弃与列表中的董事有关的人。

假设你有一个主键DirectorId从另一个区分一个导演,你应该能够做这样的事情产生一个SQL查询,将排除在首位指定的董事:

var directorIds = director.Select(d => d.DirectorId); 
var mds = db.MovieDirectors.Where(x => x.MovieId != MovieID && 
             !directorIds.Contains(x.DirectorId)) 
      .ToList(); 
return mds; 
+0

它看起来像这个工作! –

试试这个:

public List<MovieDirector> GetDirectorsPossibleForMovie(
    int MovieID, List<Director> director) 
{ 
    var mds = db.MovieDirectors.Where(x => x.MovieId != MovieID).ToList(); 
    mds = mds.Where(x => !director.Contains(x.Director)).ToList(); 
    return mds; 
} 
+1

除MoveDirectors以外的董事除外。 –

+0

'除了'是不可能的,因为需要一些而不是一些

+0

“我想让所有不在列表中的董事”这是Director对象的平等标准。 –