gpt4 book ai didi

c# - 如何在没有 'Only primitive types' 错误的情况下表达 LINQ to Entities 查询

转载 作者:行者123 更新时间:2023-11-30 22:20:50 25 4
gpt4 key购买 nike

我有一个游戏模型,它附有许多管理器模型。这是我的模型:

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

这给了我一个错误:

Only primitive types are supported in this context.

我明白它的意思,但我不知道如何用不同的方式来表达它。我最接近的是:

var gamesQuery = db.Games
.Where(game => game.Organizers
.Any(gO => gO.ID == 1));

但这什么也没有返回。我到处都看过,但所有内容都涉及事先已知的字符串数组。

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

最佳答案

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

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

参见 here为什么。

然后你应该能够像 abatishchev 在他的回答中写的那样访问所有游戏:

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

关于c# - 如何在没有 'Only primitive types' 错误的情况下表达 LINQ to Entities 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14783306/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com