【问题标题】:Using Linq, how can I obtain a list of column names from a GridView? From a DataTable?使用 Linq,如何从 GridView 获取列名列表?从数据表?
【发布时间】:2016-01-13 15:51:22
【问题描述】:

我有一个 GridView(gv)。和一个数据表(dt)。我希望能够使用 Linq 来获取仅包含其列名的列表。

我知道 gv.Columns 是 GridViewDataColumns 的集合,并且具有“名称”属性。我也知道 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()

但我收到错误提示我需要括号。我是否朝着正确的方向前进?

谢谢!

【问题讨论】:

  • 这个例子看起来像是 VB 和 C# 的混合体。那么它应该是什么?

标签: .net linq gridview


【解决方案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();

【讨论】:

  • 非常感谢。漂亮的东西。是的,这是一个混合体。我只在 C# 中使用过 linq 几次,现在不得不用 VB.NET 编写,直到你指出它才知道这些变化。谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-10-16
  • 1970-01-01
相关资源
最近更新 更多