2016-01-13 99 views
0

我有一个GridView(gv)。和一个DataTable(dt)。我希望能够使用Linq来获取列名。使用Linq,我如何从GridView获取列名列表?从DataTable?

我知道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() 

,但我得到的错误,说我需要括号内的错误。我是否正朝着正确的方向前进?

谢谢!

+1

的例子看起来像VB和C#的混合物。那么它应该是什么? –

回答

1

DataGridViewColumnCollectionDataColumnCollection这两个问题都来自.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(); 
+0

谢谢。美丽的东西。是的,这是一个混合。我只用了C#几次就使用了linq,现在不得不在VB.NET中编写代码,直到你指出它时才知道这些变化。谢谢! –