Сначала посмотрите на логику того, что вы пишете. Вы проверяете, является ли количество коллекций больше нуля внутри цикла, который итерирует по нему; это всегда будет возвращать true, поскольку цикл не будет выполняться, если коллекция содержит что-либо. Итак, что вы на самом деле пишете, так это когда код, который всегда возвращает true или который не может быть выполнен, удаляется:
foreach (BrowserEntity _browseEntity in this.entityModel.Entities)
{
if (_browseEntity.State != null)
{
this.grid.DataSource = this.entityModel.Entities;
this.grid.Columns[6].Visible = true;
break;
}
}
Итак, вы назначаете источник данных несколько раз и никогда не устанавливаете Visible
в значение false, тогда как я думаю, что вы на самом деле пытаетесь написать что-то вроде этого:
// bind the grid but hide column 6
this.grid.DataSource = this.entityModel.Entities;
this.grid.Columns[6].Visible = false;
// if there is any state then show column 6
foreach (BrowserEntity _browseEntity in this.entityModel.Entities)
{
if (_browseEntity.State != null)
{
this.grid.Columns[6].Visible = true;
break;
}
}
В качестве альтернативы, используя Linq, это можно записать следующим образом, что позволяет добиться того же, но гораздо яснее:
this.grid.DataSource = this.entityModel.Entities;
this.grid.Columns[6].Visible = this.entityModel.Entities.Any(e => e.State != null);