Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/287.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
用于将JSON数组映射到C#/ASP.Net核心中的DTO的最佳数据类型_C#_Asp.net Core_.net Core_Model_Dto - Fatal编程技术网

用于将JSON数组映射到C#/ASP.Net核心中的DTO的最佳数据类型

用于将JSON数组映射到C#/ASP.Net核心中的DTO的最佳数据类型,c#,asp.net-core,.net-core,model,dto,C#,Asp.net Core,.net Core,Model,Dto,这可能是一个愚蠢的问题,但我想知道以下几点: 我有一个.NET5WebAPI,我想在其中创建一个DTO来接受来自前端的POST请求。 POST请求中的正文包含以下JSON: { "aComment": "This is a text field", "aNumber": 5, "anArray": [1, 2, 3, 4, 5] } 在控制器中,我有一个action方法,它将接收此请求并将其

这可能是一个愚蠢的问题,但我想知道以下几点: 我有一个.NET5WebAPI,我想在其中创建一个DTO来接受来自前端的POST请求。 POST请求中的正文包含以下JSON:

{
    "aComment": "This is a text field",
    "aNumber": 5,
    "anArray": [1, 2, 3, 4, 5]
}
在控制器中,我有一个action方法,它将接收此请求并将其映射到DTO(“SomeDto”):

[HttpPost]
公共异步任务Post()
{
//一些代码
}
对于该JSON整数数组,DTO中使用的最佳数据类型是什么

* int[]

* ICollection<int>

* IEnumerable<int>

* List<int>
*int[]
*I收集
*数不清
*名单
我倾向于使用ICollection或IEnumerable,因为它们比列表轻。但是我想int[]也可以很好地工作

编辑:

我看到.NETCore在构建现有数据库时,创建ICollection类型的集合,并在类构造函数中初始化它们。例如:

public class SomeModel
{
    public SomeModel()
    {
        Accounts = new HashSet<Account>();
    }

    public int? Id { get; set; }
    public virtual ICollection<Account> Accounts { get; set; }
}
公共类模型
{
公共模型()
{
Accounts=newhashset();
}
公共int?Id{get;set;}
公共虚拟ICollection帐户{get;set;}
}

那么也许我也应该使用ICollection?尽管在上面的脚手架示例中,集合的类型为“Account”(即对象)。不确定这是否也适用于Integer等基本类型的简单集合?

在此处使用
dynamic


public async Task Post()

谢谢Sami。不确定我是否正确理解了您的意思,但是JSON数组(“anArray”)可以有不同数量的元素,但是这些元素总是基本类型integer。您的建议是使用int[],对吗?只使用适合的数据类型-没有“最佳”数据类型。如果您的收藏从未更改-请使用数组,如果收藏不时更改,但不保留顺序-请使用
ICollection
,如果它是有序收集-使用
IList
。我宁愿不使用
IEnumerable
,因为我引用的是可能无法具体化的数据。问题是如何设计
SomeDto
,而不是如何将其从控制器中抛出
public class SomeModel
{
    public SomeModel()
    {
        Accounts = new HashSet<Account>();
    }

    public int? Id { get; set; }
    public virtual ICollection<Account> Accounts { get; set; }
}