C# 是否可以将流集合直接反序列化到字典中?而不是使用ToDictionary

C# 是否可以将流集合直接反序列化到字典中?而不是使用ToDictionary,c#,.net-core,stream,deserialization,C#,.net Core,Stream,Deserialization,我收集了一些简单的股票和价格: [ { "name": "AABA", "price": 60.6808}, { "name": "AAL", "price": 33.3216} ] 股票类别: public class Stock { public string Name { get; set; } public decimal Price

我收集了一些简单的股票和价格:

[
    { "name": "AABA", "price": 60.6808},
    { "name": "AAL", "price": 33.3216}
]
股票类别:

public class Stock
{
    public string Name { get; set; }
    public decimal Price { get; set; }
}
我的目标是将流直接反序列化到IDictinary,其中键是
名称
,值是
股票
(出于性能原因),我只能将流反序列化为
IEnumerable
,然后使用以下代码将其转换为字典:

using (stream)
{
    IDictinary<string, Stock> = await System.Text.Json.JsonSerializer
            .DeserializeAsync<IEnumerable<Stock>>(stream.BaseStream, 
                new JsonSerializerOptions() { PropertyNameCaseInsensitive = false }, 
            ct); 
}

不,那不是字典的正确形状。你已经在做的是正确的方法。您可以尝试编写一个自定义的反序列化来避免一个步骤,但与您已经拥有的能够正常工作的对象相比,这是一个很大的工作,并且有很多引入错误的机会。

ToDictionary(x=>x.Name,x=>x)
至少可以让您重用现有的
库存
对象,而不是构建新的对象
    IDictinary<string, Stock> = await System.Text.Json.JsonSerializer
            .DeserializeAsync<IDictinary<string, Stock>>(stream.BaseStream, 
                new JsonSerializerOptions() { PropertyNameCaseInsensitive = false }, 
            ct);