CodeFirstを使用する.NET4MVC4には、多対多の関係を形成する2つのクラスがあります。簡単なLINQクエリを記述して、特定のジャンルのリストから少なくとも1つ以上のジャンルを持つすべてのゲームを検索するにはどうすればよいですか?(つまり、ストラテジーおよび/またはサンドボックスのジャンルのすべてのゲームを取得します)
public class Game
{
public int ID { get; set; }
public virtual ICollection<Genre> Genres { get; set; }
}
public class Genre
{
public int ID { get; set; }
public virtual ICollection<Game> Games { get; set; }
}
私はCodeFirstを使用しているため、抽象化された結合テーブルGenreGamesにアクセスできないことに注意してください。
配列gidから少なくとも1つのジャンルIDを含むゲームを見つけるために、次のことを試みました。
var gid = new int[] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
var result = from g in unitOfWork.GameRepository.dbSet
where (
from gen in unitOfWork.GenreRepository.dbSet
where gid.Contains(gen.ID)
select gen.ID
).Any()
select g;
結果を取得する場合
List<Game> similiarGames = result.ToList<Game>();
次のエラーが発生します。
タイプ'GratifyGaming.Domain.Models.Genre'の定数値を作成できません。このコンテキストでは、プリミティブ型または列挙型のみがサポートされています。
プリミティブ型または列挙型のみを使用して、必要な結果を得るにはどうすればよいですか?回避策はありますか?