Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/256.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用Linq将结果选择到对象的新实例中_C#_Linq_Asp.net Core_Asp.net Core Webapi_Asp.net Core 3.1 - Fatal编程技术网

C# 使用Linq将结果选择到对象的新实例中

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

我有一个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;
}
    
    
[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()之前,请尝试添加
的结尾
`