多くのオーガナイザーモデルがアタッチされたゲームモデルがあります。これが私のモデルです:
public class Organizer
{
public int ID { get; set; }
public string Name { get; set; }
public List<Game> Games {get; set; }
}
public class Game
{
public int ID { get; set; }
public string Name { get; set;}
public List<Organizer> Organizers { get; set; }
}
特定のオーガナイザーを含むすべてのゲームを取得しようとしています。たとえば、次のようなデータがあるかもしれません。
Game
ID Name
-- ----
1 Soccer
2 Baseball
Organizer
ID Name
-- ----
1 John
2 Barry
GameOrganizer
GameID OrganizerID
------ -----------
1 1
2 1
そして、これが私が使おうとしているコードです:
Organizer thisOrganizer = db.Organizers.Single(o => o.ID == 1);
var gamesQuery = db.Games
.Where(game => game.Organizers.Contains(thisOrganizer))
.Select(g => new { ID = g.ID, Name = g.Name });
これは私にエラーを与えます:
このコンテキストでは、プリミティブ型のみがサポートされています。
それが何を意味するのかは理解できますが、それを別の方法で表現する方法がわかりません。私が来た最も近いものは次のとおりです。
var gamesQuery = db.Games
.Where(game => game.Organizers
.Any(gO => gO.ID == 1));
しかし、それは何も返しません。私はいたるところを見てきましたが、すべてが事前にわかっている文字列配列を扱っています。
では、モデルオブジェクトなしでこれをどのように表現できますか?