【问题标题】:Convert RepeatedField to List将重复字段转换为列表
【发布时间】:2021-07-07 01:33:00
【问题描述】:

.Net

我的 protobuf 文件:

message Result{
    repeated ListOfStrings lists = 1;
}

message ListOfStrings {
    repeated string strings = 1;
}

我有一个具有此属性的类:

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

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

cannot convert from 'Google.ProtobufCollections.RepeatedField&lt;gRPC.ListOfStrings&gt;' to 'System.Collection.Generic.IEnumerable&lt;System.Collections.Generic.List&lt;string&gt;&gt;

如何处理?

【问题讨论】:

    标签: .net protocol-buffers grpc protobuf-net protobuf-csharp-port


    【解决方案1】:

    List&lt;List&lt;string&gt;&gt; 与具有 字符串的事物列表不同。您可能需要:

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

    【讨论】:

      【解决方案2】:

      你能不能试试CopyTo方法,doc

      示例伪代码:

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

      【讨论】:

        猜你喜欢
        • 2019-11-27
        • 2020-03-19
        • 2011-10-17
        • 2017-10-01
        • 2020-11-11
        • 2016-08-29
        • 2011-02-23
        • 2019-11-18
        • 2017-06-28
        相关资源
        最近更新 更多