我知道我们可以通过一个简单的循环很容易地做到这一点,但是我想说服这个LINQ/谓词?

string[] columnNames = dt.Columns.?

or

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

推荐答案

try 此操作(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是必需的,因为列的类型是DataColumnCollection,它是IEnumerable,而不是IEnumerable<DataColumn>.其他部分应该是显而易见的.

.net相关问答推荐

使用PowerShell在Windows容器内安装exe

DotNet COM初始化问题

AutoMapper在实体框架查询后不知从哪里带来数据

在 .NET 7 项目上设置 Sentry 时遇到问题

当 Func 委托需要接口作为参数时,它是如何工作的?

设置日志(log)文件名以在 Log4j 中包含当前日期

如何在 WPF 应用程序中使用 App.config 文件?

为什么 ?: 会导致转换错误,而 if-else 不会?

struct 中需要覆盖什么以确保平等正常运行?

运算符重载 ==, !=, Equals

数据库架构更改后更新 LINQ to SQL 类的最佳方法

属性应该与其类型同名吗?

C# 的 Actors 有什么好的实现吗?

向 .NET 应用程序添加脚本功能

如何允许程序集(单元测试)访问另一个程序集的内部属性?

当我们按下 Enter 键时启动的 WPF 文本框命令

如何使用 EPPlus 设置 XLSX 单元格宽度?

如何在 C# 中使用迭代器反向读取文本文件

在 C# 中转义无效的 XML 字符

NServiceBus 与 MassTransit