2012-11-28 134 views
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

謝謝!

+1

你說你想要導演,但是你的方法會返回MovieDirectors。哪一個? –

回答

1

@如果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

它看起來像這個工作! –

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; 
} 
+1

除MoveDirectors以外的董事除外。 –

+0

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

+0

「我想讓所有不在列表中的董事」這是Director對象的平等標準。 –