【发布时间】:2020-09-18 18:10:05
【问题描述】:
我有这个 linq 查询,用于连接 _gameContext 中的两个表。
我正在尝试使用 select 创建一个 GameScoresDto 类型的新对象。
但我不断收到一条消息,说 GameScoresDto 没有带 5 个参数的构造函数。
我知道错误的含义,但我认为有一种方法可以使用select 将结果选择到新对象中。
我做错了什么?
谢谢!
[HttpGet("GameScores/{gameId}")]
public async Task<ActionResult<List<GameScoresDto>>> GameScores(Guid gameID)
{
//var gameScores = await _gameContext.CurrentScores.Where(c => c.GameId == gameID).ToListAsync();
var gameScores = await (from cs in _gameContext.CurrentScores
join sm in _gameContext.ScoreMax
on cs.CurrentScoreId equals sm.CurrentScoreId
where cs.GameId == gameID
select
new GameScoresDto (
cs.ScoreId,
cs.GameId,
cs.InitialValue,
cs.MaximumValue,
sm.ActionAmount
).ToListAsync();
return gameScores;
}
【问题讨论】:
-
这意味着您正在尝试使用
5参数(ScoreId、GameId、InitialValue、MaximumValue 和 ActionAmount)调用GameScoresDto构造函数,但没有为该类型定义构造函数接受5参数。 -
没有看到 GameScoresDto,很难说,但我猜它有 5 个属性,按此顺序,您希望简单地传递它以填充这些属性。如果是这种情况,请尝试使用花括号并按名称设置属性
标签: c# linq asp.net-core asp.net-core-webapi asp.net-core-3.1