Firstly, do you really have to have a mutable struct? They're evil. Likewise public fields.
Other than that, I'd just create a constructor taking the two bits of data:
class SomeClass
{
struct MyStruct
{
private readonly string label;
private int id;
public MyStruct (string label, int id)
{
this.label = label;
this.id = id;
}
public string Label { get { return label; } }
public string Id { get { return id; } }
}
static readonly IList<MyStruct> MyArray = new ReadOnlyCollection<MyStruct>
(new[] {
new MyStruct ("a", 1),
new MyStruct ("b", 5),
new MyStruct ("q", 29)
});
}
Note the use of ReadOnlyCollection instead of the array itself - this will make it immutable, avoiding the problem exposing arrays directly.