我有一个GridView(gv)。还有一个DataTable(dt)。我希望能够使用Linq来获取列名列表。
我知道gv.Columns是GridViewDataColumns的集合,并且具有“Name”属性。我也知道dt.Columns是DataColumns的集合,并且具有“ColumnName”属性。
我试图做类似的事情:
Dim gvList as List(Of String) = gv.Columns.Select(x=>x.Name).ToList()
Dim dtList as List(Of String) = dt.Columns.Select(y=>y.ColumnName).ToList()
但我收到的错误是一个错误,说我需要括号。我甚至正朝着正确的方向前进吗?
谢谢!
答案 0 :(得分:1)
有问题的DataGridViewColumnCollection和DataColumnCollection类来自.NET的“预通用”时间,因此它们不实现IEnumerable<T>
,因此不能直接用于LINQ查询运算符。
幸运的是,他们实施了IEnumerable
,因此您可以先使用Enumerable.Cast将其转换为IEnumerable<T>
,就像这样(C#代码):
var gvList = gv.Columns.Cast<DataGridViewColumn>().Select(c => c.Name).ToList();
var dtList = dt.Columns.Cast<DataColumn>().Select(c => c.ColumnName).ToList();