C# 从DataTable中获取特定列标题名称

C# 从DataTable中获取特定列标题名称,c#,linq,datatable,C#,Linq,Datatable,我需要根据值获取特定的列标题名称 例如:我正在使用下面的查询来获取列标题列表,它运行良好,并且在此基础上可以获取具有特定名称的列名,例如部门 LINQ string[] columnNames = dt.Columns.Cast<DataColumn>() .Select(x => x.ColumnName) .ToArray(); string[]columnNames=dt

我需要根据值获取特定的列标题名称

例如:我正在使用下面的查询来获取列标题列表,它运行良好,并且在此基础上可以获取具有特定名称的列名,例如
部门

LINQ

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

如何在此查询中添加contains或exists以获取特定列。

您可以选择,然后过滤结果:

.Select(x => x.ColumnName).Where(c => c == "Department")
或先筛选,然后选择:

.Where(x => x.ColumnName == "Department").Select(c => c.ColumnName)

您可以选择然后过滤结果:

.Select(x => x.ColumnName).Where(c => c == "Department")
或先筛选,然后选择:

.Where(x => x.ColumnName == "Department").Select(c => c.ColumnName)

只需添加一个过滤器,如下所示:

string[] columnNames = dt.Columns.Cast<DataColumn>()
                             .Select(x => x.ColumnName)
                             .Where(x => x == "Department")
                             .ToArray();
string[]columnNames=dt.Columns.Cast()
.选择(x=>x.ColumnName)
.其中(x=>x==“部门”)
.ToArray();

只需添加一个过滤器,如下所示:

string[] columnNames = dt.Columns.Cast<DataColumn>()
                             .Select(x => x.ColumnName)
                             .Where(x => x == "Department")
                             .ToArray();
string[]columnNames=dt.Columns.Cast()
.选择(x=>x.ColumnName)
.其中(x=>x==“部门”)
.ToArray();

Columns
属性的类型为
DataColumnCollection
,它具有索引器
公共数据列此[字符串名称]
按名称获取数据列:

DataColumn dc = dt.Columns["Department"];
要按名称获取多个列,请使用带有索引器的
Select()

List<string> names = new List<string> { "Department", "Something" };
DataColumn[] columns = names.Select(name => dt.Columns[name]).ToArray();
List name=新列表{“部门”、“某物”};
DataColumn[]columns=names.Select(name=>dt.columns[name]).ToArray();

Columns
属性的类型为
DataColumnCollection
,它具有索引器
公共数据列此[字符串名称]
按名称获取数据列:

DataColumn dc = dt.Columns["Department"];
要按名称获取多个列,请使用带有索引器的
Select()

List<string> names = new List<string> { "Department", "Something" };
DataColumn[] columns = names.Select(name => dt.Columns[name]).ToArray();
List name=新列表{“部门”、“某物”};
DataColumn[]columns=names.Select(name=>dt.columns[name]).ToArray();
List containsKeys=new List();
containsKeys.Add(“SomeWildCard”);
DataTable dt=新的DataTable();
string[]columnNames=dt.Columns.Cast()
.选择(x=>x.ColumnName)
.ToArray()。其中(t=>containsKeys.Contains(t)).ToArray();
List containsKeys=new List();
containsKeys.Add(“SomeWildCard”);
DataTable dt=新的DataTable();
string[]columnNames=dt.Columns.Cast()
.选择(x=>x.ColumnName)
.ToArray()。其中(t=>containsKeys.Contains(t)).ToArray();

你的意思是像添加
。其中(x=>x==“部门”)
?@DavidG
x
DataColumn
。这怎么可能?你的意思可能是
。其中(x=>x.ColumnName==“Name”)
。请检查我的答案。@S.Akbari如果您将该行放在
选择之后,则不会。我没有回答这个问题,因为当你已经有一个字符串时,从一个字符串列表中选择一个字符串是不清楚的,也是毫无意义的。我希望其他人也有同样的想法…@DavidG Yes,在
Select
之后加上
Where
,我也指出了这一点。我以为你说用
Where
@S.Akbari替换
Select
,对我评论的第二部分没有什么可说的?你的意思是添加
。Where(x=>x==“Department”)
?@DavidG
x
DataColumn
。这怎么可能?你的意思可能是
。其中(x=>x.ColumnName==“Name”)
。请检查我的答案。@S.Akbari如果您将该行放在
选择之后,则不会。我没有回答这个问题,因为当你已经有一个字符串时,从一个字符串列表中选择一个字符串是不清楚的,也是毫无意义的。我希望其他人也有同样的想法…@DavidG Yes,在
Select
之后加上
Where
,我也指出了这一点。我以为你说用
Where
@S.Akbari替换
Select
,而对我评论的第二部分没有什么可说的?