1

作为查询的结果,我希望所有不在我发送的列表中的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

谢谢!

4

2 回答 2

1

试试这个:

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;
}
于 2012-11-28T20:37:16.430 回答
1

如果 MovieDirector 类的哈希码和 equals 方法设置正确,@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;
于 2012-11-28T21:36:06.637 回答