public static void Main()
var Grid = new {Columns= new[]{new {Visible=true,Header="header1",ActualVisibleIndex=3},
new {Visible=true,Header="header2",ActualVisibleIndex=2},
new {Visible=false,Header="header3",ActualVisibleIndex=5},
new {Visible=true,Header="header4",ActualVisibleIndex=1}}
var headers = String.Join(",",Grid.Columns.Where(x=>x.Visible && !string.IsNullOrEmpty(x.Header)).OrderBy(x=>x.ActualVisibleIndex)
.Select(x=>"{"+x.Header+"}"));