使用Linq从DataTable单元格中删除空格

3

这段代码的作用是去掉每个数据行中每个数据单元格中的所有空格。 我该如何获得这段代码:

var dataRows = dataTable.AsEnumerable();
foreach (var row in dataRows)
{
     var cellList = row.ItemArray.ToList();
     row.ItemArray = cellList.Select(x => x.ToString().Trim()).ToArray();
}

我需要将多行代码转换成一行代码,这样我就不必循环每一行了。类似于这样的东西,但它不起作用:

dataTable.AsEnumerable().Select(y => y.ItemArray.ToList()).Select(x => x.ToString().Trim());

为了澄清一下,因为它读起来像是有一个误解:使用linq或任何其他形式的一行代码仍然会循环遍历每一行。它可能不是显式地使用foreach,但它确实会这样做。我猜接下来的问题是为什么你想要这样做?上面的代码似乎已经足够适用和可读了,比通过linq更加如此... - Chris
Chris,我猜真正的原因是看看它是否能够完成。我认同初始代码更易读,并将保持现状。感谢您的评论。 - zeb ula
3个回答

2

如果您喜欢LINQ风格:

  dataTable.AsEnumerable().ToList()
        .ForEach(row =>
        {
            var cellList = row.ItemArray.ToList();
            row.ItemArray = cellList.Select(x => x.ToString().Trim()).ToArray();
        });

1
例如。
var iq = obj from dataTable.asEnumerable() select new{
PersonName = a.Field<string>("PersonName"),
PersonID = a.Field<decimal>("PersonID"),
ParticipantString = a.Field<string>("DisplayString"),
PersonUserName = d.Field<string>("UserName")
}

1

使用linq无法更改项目值,最终您应该运行for循环(或foreach)来更改字段值。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接