Linq 处理DataTable列名不匹配异常

Linq 处理DataTable列名不匹配异常,linq,c#-4.0,Linq,C# 4.0,我从excel工作表上传中输入数据表,当我查找特定列时会遇到问题,具有讽刺意味的是,我不知道列的位置,它可能在任何地方,也可能不存在 所以我不能使用索引,当我使用列名时,然后使用空格会导致问题 我假设我知道列的索引,但是如何处理空格呢 到目前为止我试过什么 代码: if(ds.Tables[0]。Columns[3]。Caption.Replace(“,”)。Equals(“XXXX”)) { var ds=from ds.Tables[0]中的r.AsEnumerable()选择新的{Fna

我从excel工作表上传中输入数据表,当我查找特定列时会遇到问题,具有讽刺意味的是,我不知道列的位置,它可能在任何地方,也可能不存在

所以我不能使用索引,当我使用列名时,然后使用空格会导致问题

我假设我知道列的索引,但是如何处理空格呢

到目前为止我试过什么

代码:


if(ds.Tables[0]。Columns[3]。Caption.Replace(“,”)。Equals(“XXXX”))
{
var ds=from ds.Tables[0]中的r.AsEnumerable()选择新的{Fname=r.Field(“XX XX”),Lname=r.Field(“Yy-Yy”)};
ds.ToList();
}
我是否需要关心列名中的大小写敏感性


如果列索引与给定字符串匹配,如何查找该列索引?

您可以找到如下列:

DataColumn yourColumn = ds.Tables[0].Columns.Cast<DataColumn>()
                                    .Where(r => r.Caption.Trim().Equals("XXXX",StringComparison.InvariantCultureIgnoreCase))
                                    .FirstOrDefault();
DataColumn yourColumn=ds.Tables[0].Columns.Cast()
.Where(r=>r.Caption.Trim().Equals(“XXXX”,StringComparison.InvariantCultureIgnoreCase))
.FirstOrDefault();

谢谢你的帮助,我找到了替代方案
DataColumn yourColumn = ds.Tables[0].Columns.Cast<DataColumn>()
                                    .Where(r => r.Caption.Trim().Equals("XXXX",StringComparison.InvariantCultureIgnoreCase))
                                    .FirstOrDefault();