将 RepeatedField 转换为列表

Convert RepeatedField to List

.网

我的 protobuf 文件:

message Result{
    repeated ListOfStrings lists = 1;
}

message ListOfStrings {
    repeated string strings = 1;
}

我有一个 class 这个 属性:

public List<List<string>> ListOfLists { get; set; }

Protobuf 编译器生成 RepeatedField 集合,当我尝试将此集合传递给 ListOfLists.AddRange() 时,出现此错误:

cannot convert from 'Google.ProtobufCollections.RepeatedField<gRPC.ListOfStrings>' to 'System.Collection.Generic.IEnumerable<System.Collections.Generic.List<string>>

如何处理?

你能试试CopyTo方法吗,doc

示例伪代码:

 Result result = ...
 foreach(var list in result.list)
 {
    string[] arr = new string[list.Count];
    list.CopyTo(arr,0);
    ListOfLists.Add(arr.ToList());
 }

A List<List<string>> 具有 字符串的事物列表不同。您可能需要:

foreach (var list in outerList) {
    var inner = new ListOfStrings();
    inner.Strings.AddRange(list);
    obj.Lists.Add(inner);
}