我是协议缓冲区的新手,我正在为VS2010使用protobuf-net.从我在这里阅读协议缓冲区中的字典,似乎protobuf不能将具有对象类型的字典序列化为值.但在他的网站上我读到了这个:
关于类型的说明
支持的:
自定义类:标记为数据契约具有Silverlight的无参数构造函数:公共许多常见原语等单维数组:T [] List/IList Dictionary/IDictionary任何实现IEnumerable并具有Add(T)方法的类型代码假定类型在选定成员周围是可变的.因此,不支持自定义结构,因为它们应该是不可变的.
这似乎得到了支持.
我可以像这样成功编译一个对象列表:
message ValuesObject {
optional int32 SomeVal = 1;
repeated SomeClass ListOfSomeClassTypes = 2;
}
Run Code Online (Sandbox Code Playgroud)
这适用于List<SomeClass>.为什么我不能使用protobuf-net序列化Dictionary<int, SomeClass>?该序列化的消息是什么样的Dictionary<int, SomeClass>?
我完全困惑,在互联网上找不到任何关于此的信息,所以我一定是做错了什么?
_positionsRepo.GetAllTrades().OrderByDescending(x => x.TotalPLPercent).ToList();
Run Code Online (Sandbox Code Playgroud)
TotalPLPercent 是一个十进制字段。结果顺序是这样的:
96.76
95.54
8.54
75.55
231.22
13
Run Code Online (Sandbox Code Playgroud)
显然,这是错误的。我针对另一个双精度字段测试了排序,它按预期工作。关于 C# 中的小数,我在这里遗漏了什么?
我正在使用 Mongo DB C# 驱动程序。
假设我有一个从数组创建的Observable流,如下所示:
const items: Items = [{},{},{},{},{},...];
const obs$ = from(items).pipe(
mergeMap(items => {
return this.getData(items);
})
);
Run Code Online (Sandbox Code Playgroud)
正如此代码所示,getData()将为数组中的每个项调用.我想要做的是将items数组分成N个相等大小的数组,然后发出这些数组.然后getData()将使用单个数组而不是原始项数组中的每个项调用.
基本上我需要toArray()运算符的变体,但只需要预先定义的流的部分.