C#Gridview - 在添加新列时检查列是否已存在失败

Nir*_*Nir 2 c# ado.net gridview

我有一个包含10列的GridView.在某种情况下,我想添加一个名为"过期日期"的新列.问题是当用户再次按下"搜索"(回发)时,将再次添加该列.
我在添加列之前检查,看它是否已经存在:

BoundField dtExp = new BoundField
                            {DataField = "DateTimeExpired", HeaderText = "Expiration Date", DataFormatString = "{0:d}"};
if (!grid.Columns.Contains(dtExp)){grid.Columns.Add(dtExp);}
Run Code Online (Sandbox Code Playgroud)

但问题是即使列已经存在,"Contains"也会返回false.
我究竟做错了什么?

谢谢!

dev*_*evi 5

您可以强制转换Columns为类型IEnumerable <>并使用LINQ检查列是否存在:

var gridBoundColumns = Grid1.Columns.OfType<BoundField>();
if(gridBoundColumns.Any(bf => bf.DataField.Equals(searchColumn.Name)) == false)
{
    Grid1.Columns.Add(new BoundField{ ... });
}
Run Code Online (Sandbox Code Playgroud)