这是我第一次使用protobuf,我想知道是否有任何方法可以访问重复字段中的特定项目。
我创建了一个方法,该方法将遍历所有项目,检查项目字段,然后将其返回(我无法返回指向它的指针:()。
{{1}}
似乎没有找到使用lambda表达式的方法。
还有其他方法可以实现这一目标吗?如果我可以拥有指向该项目的指针,而不是它的副本,那将是完美的,因此,如果我进行更改,则可以直接编写完整的重复字段。
答案 0 :(得分:0)
如果我可以拥有指向该项目的指针,而不是它的副本,那将是完美的,因此,如果我更改它,则可以直接编写完整的重复字段。
您不能这样做,但是可以返回元素的 index 。鉴于重复字段实现了IEnumerable<T>
,您应该能够足够容易地使用LINQ。例如:
// index is an "int?" with a value of null if no items matched the query
var index = repeatedField
// You could use tuples here if you're using C# 7. That would be more efficient.
.Select((value, index) => new { value, (int?) index })
// This is whatever condition you want
.Where(pair => pair.value.SomeField == "foo")
.Select(pair => pair.index)
.FirstOrDefault();