C# Linq使用列索引获取数据表的列名

C# Linq使用列索引获取数据表的列名,c#,linq,C#,Linq,我试图通过使用Linq的列索引来查找datatable的一个列名。 例如: int colindex = 2; Datatable: PersonInfo ID Name Address City State Country Zip 1 xx 11-23 LA CA USA 9123 PersonInfo.AsEnumerable().Select(x => x.field<int>(Colindex).ColumnName

我试图通过使用Linq的列索引来查找datatable的一个列名。 例如:

  int colindex = 2;

  Datatable: PersonInfo
  ID Name Address City State Country Zip 
  1  xx    11-23    LA  CA    USA    9123

  PersonInfo.AsEnumerable().Select(x => x.field<int>(Colindex).ColumnName);

  returns Address
int-colindex=2;
数据表:PersonInfo
ID姓名地址城市州国家邮政编码
1 xx 11-23美国加利福尼亚州洛杉矶9123
PersonInfo.AsEnumerable().Select(x=>x.field(Colindex.ColumnName);
返回地址

为什么要使用LINQ来实现这一点?这很容易:

var columnName = PersonInfo.Columns[colindex].ColumnName;
您的代码不起作用,因为
Field
扩展方法返回
T
,所以
Field
返回
int
,并且无法从该
int
值获取列名

如果确实必须使用LINQ,则应查询
DataTable.Columns
属性,而不是行:

var columnName = PersonInfo.Columns.Cast<DataColumn>().ElementAt(colindex).ColumnName;
var columnName=PersonInfo.Columns.Cast().ElementAt(colindex.columnName);

感谢linq语句的有效性,我正在尝试创建一个linq语句来检查一些东西,因为应用程序是模仿excel的