1

我有两张以这些类的形式出现的表格

public class Movie
{
    private int MovieID;
    private string Title;
}
public class transactions
{
    private int TransactionID;
    private int MovieID;

}

所以第一个表包含所有电影第二个包含租用的电影

如何选择商店中剩余的所有电影,即未租用且可用的电影。试过这样的东西:

var moviesavailable =
  (from m in db.Movies 
  select m.MovieID ).Intersect
  (from trans in db.Transactions 
  select trans.MovieID)

但不工作...

4

1 回答 1

7

第一种方法是检查所有电影,如果没有具有相同 MovieID 的事务,则为每个外观:

db.Movies.Where(m => !db.Transactions.Any(t => t.MovieID == m.MovieID))

第二种方法是左连接。我们连接来自 Movies 的所有行以及来自 Transactions 的等效行。如果电影中的一行在事务中没有行,则对于该行,事务为空 (DefaultIfEmpty):

from m in db.Movies
join t in db.Transactions on m.MovieID equals t.MovieID into g
from t in g.DefaultIfEmpty()
where t == null
select m.MovieID
于 2012-09-12T11:49:07.233 回答