c# - 使用 (LINQ/Predicate) 将 DataTable 的所有列名放入字符串数组

标签 c# .net linq datatable

我知道我们可以通过一个简单的循环轻松地做到这一点,但我想说服这个 LINQ/Predicate?

string[] columnNames = dt.Columns.?

or

string[] columnNames = from DataColumn dc in dt.Columns select dc.name;

最佳答案

试试这个(LINQ 方法语法):

string[] columnNames = dt.Columns.Cast<DataColumn>()
                                 .Select(x => x.ColumnName)
                                 .ToArray();  

或者在 LINQ 查询语法中:

string[] columnNames = (from dc in dt.Columns.Cast<DataColumn>()
                        select dc.ColumnName).ToArray();

Cast是必需的,因为 Columns 是 DataColumnCollection 类型,它是 IEnumerable , 不是 IEnumerable<DataColumn> .其他部分应该是显而易见的。

关于c# - 使用 (LINQ/Predicate) 将 DataTable 的所有列名放入字符串数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5026285/

相关文章:

c# - 使用 DacFX 对 DACPAC 中的 View 进行代码分析验证

c# - .NET:为什么 TryParseExact 在 Hmm 和 Hmmss 上失败?

c# - 谷歌 reCAPTCHA 的替代方案

C# 动态 Linq : Strings are assumed to be integers?

c# - LINQ 多对多在哪里

c# - 从缓存表中停止 linq

c# - Entity Framework + 存储库 + 工作单元

c# - 当创建它的线程终止时,COM 对象是否被 CLR 释放?

c# - 为什么 'Any CPU' 应用程序在 x64 机器上以 x86 运行?

c# - WPF 列表和上下文菜单