如何在没有';只有基元类型';错误

本文关键字:类型 错误 | 更新日期: 2023-09-27 17:58:30

我有一个游戏模型,它附带了许多Organizer模型。以下是我的模型:

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));

但那只是一无所获。我到处都找过了,但所有的东西都涉及预先已知的字符串数组。

那么,如果没有模型对象,我该如何表达呢?

如何在没有';只有基元类型';错误

Organizer类中,Games属性应该如下所示:

public virtual ICollection<Game> Games { get; set; }

请参阅此处的原因。

然后你应该能够访问所有的游戏,就像阿巴蒂舍夫在他的回答中所写的那样:

Organizer thisOrganizer = db.Organizers.Single(o => o.ID == 1);
var games = thisOrganizer.Games;

您需要同时声明Games为Organizer的(导航)属性,那么它将只是:

db.Organizers.Single(o => o.ID == 1).Games;