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はリンクされていますが、ともリンクされていMovieDirectorますDirector

ありがとう!

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

@Enigmativity の答えは、MovieDirector クラスにハッシュ コードと equals メソッドが正しく設定されている場合に機能する可能性がありますが、ほとんどすべての 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 に答える