【问题标题】:C# Convert a Dictionary<int, byte[]> to byte[]C# 将 Dictionary<int, byte[]> 转换为 byte[]
【发布时间】:2020-02-03 01:28:39
【问题描述】:

我有一个返回 Dictionary&lt;int, byte[]&gt; 的 API 调用

var receiptData 
= await GetAsync($"Services/GenerateReceiptForPrint?
transactionId={transactionId}");

receiptData 的类型为 Dictionary&lt;int, byte[]&gt; 我想得到它的byte[]

【问题讨论】:

  • 在提问之前请考虑阅读我们的How to Ask 主题。你有没有尝试过?
  • 因为你没有说你想如何将Dictionary&lt;int, byte[]&gt; 转换为byte[] 我假设你想要一个二进制对象序列化:using (var formatter = new BinaryFormatter()) { using (var stream = new MemoryStream()) { formatter.Serialize(stream, receiptData); var receiptDataArray = stream.ToArray(); } }

标签: c# arrays dictionary byte


【解决方案1】:

DictionaryKeysValues 的集合。见:

https://docs.microsoft.com/en-us/dotnet/api/system.collections.generic.dictionary-2?view=netframework-4.8

在您的情况下,键是ints,值是字节数组。

要从必须只有一个条目的字典中获取第一个值,您可以通过其键引用该条目;类似:

if(receiptData.Count() != 1)
    throw new Exception($"receiptData Dictionary should have exactly 1 entry, but has {receiptData.Count()}");
var myByteArray = receiptData[0] // gets the value of the first entry in the dictionary

但是如果字典中有多个条目怎么办?

您应该仔细阅读 Microsoft 参考文档。

【讨论】:

  • 字典里只有一个词条
  • @beans,“字典中只有一个条目” - 这绝对必须在您的问题中提及:D
  • 即使您的响应应该只有一个条目,但这并不是Dictionary 类中存在的限制。所以你应该额外检查返回的字典,确保它只包含一个条目,如果不包含则抛出错误。
  • 我更新了每条评论回复:字典中只有一个条目
猜你喜欢
  • 1970-01-01
  • 2012-02-05
  • 2011-06-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-19
  • 2018-08-31
  • 2011-06-08
相关资源
最近更新 更多