C# 使用Linq将结果选择到对象的新实例中
我有一个linq查询,用于连接来自_gameContext的两个表 我正在尝试使用C# 使用Linq将结果选择到对象的新实例中,c#,linq,asp.net-core,asp.net-core-webapi,asp.net-core-3.1,C#,Linq,Asp.net Core,Asp.net Core Webapi,Asp.net Core 3.1,我有一个linq查询,用于连接来自_gameContext的两个表 我正在尝试使用select创建GameScoresDto类型的新对象 但我一直得到一个消息,GameScoresDto没有一个接受5个参数的构造函数 我知道错误的含义,但我认为有一种方法可以使用select将结果选择到新对象中 我可能做错了什么 谢谢 [HttpGet("GameScores/{gameId}")] public async Task<ActionResult<List<Ga
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;
}
[HttpGet(“GameScores/{gameId}”)]
公共异步任务游戏分数(Guid gameID)
{
//var gameScores=await_gameContext.CurrentScores.Where(c=>c.GameId==GameId.toListSync();
var gameScores=等待(来自_gameContext.CurrentScores中的cs
在_gameContext.ScoreMax中加入sm
在cs.CurrentScoreId上等于sm.CurrentScoreId
其中cs.GameId==GameId
选择
新游戏记分到(
cs.ScoreId,
配子体,
cs.InitialValue,
cs.最大值,
诉讼金额
).ToListAsync();
返回游戏分数;
}
这意味着您试图使用5
参数(ScoreId、GameId、InitialValue、MaximumValue和ActionAmount)调用GameScoresDto
构造函数,但没有为该类型定义使用5
参数的构造函数
要解决此问题,请创建一个接受以下5
参数的构造函数:
public class GameScoreDTO
{
public GameScoreDTO(int scoreId, int gameId, int initVal, int maxVal, int actionAmt)
{
// Set properties from constructor arguments here
}
// Other class code omitted
}
或者改用对象初始值设定项语法:
select new GameScoresDto
{
ScoreId = cs.ScoreId,
GameId = cs.GameId,
InitialValue = cs.InitialValue,
MaximumValue = cs.MaximumValue,
ActionAmount = sm.ActionAmount
}
(上面的代码示例假设
GameScoresDto
具有指定的属性)这意味着您正试图使用5
参数(ScoreId、GameId、InitialValue、MaximumValue和ActionAmount)调用GameScoresDto
构造函数,但没有为接受5
参数的类型定义构造函数。如果没有看到GameScoresDto,很难说,但我猜它有5个属性,按顺序排列,您希望只传递它来填充这些属性。尝试使用大括号并按名称设置属性,如果是这样的话谢谢!太好了解决了所有问题,除了我的.ToListAsync();
结尾,它说GameScoresDto不包含ToListAsync
的定义。在调用ToListAsync()之前,请尝试添加的结尾)
`