修剪数据表的所有单元格

本文关键字:单元格 数据表 修剪 | 更新日期: 2023-09-27 18:09:38

我有一个使用SQL查询填充的DataTable。如果这个DataTable的值没有被裁剪(从左到右),程序将无法找到正确的匹配。所以我正在寻找一个有效的LINQ查询(不是两个嵌套的foreach语句)来修剪DataTable中的所有值并返回它的干净版本。

修剪数据表的所有单元格

最有效的方法是在数据库中执行此操作,例如:

SELECT RTRIM(LTRIM(ColumnName)) AS TrimmedColumn FROM TableName

如果你必须在c#中这样做,最有效的方法是一个简单的循环(LINQ也使用循环):

DataColumn[] stringColumns = table.Columns.Cast<DataColumn>()
    .Where(c => c.DataType == typeof(string))
    .ToArray();
foreach(DataRow row in table.Rows)
   foreach(DataColumn col in stringColumns)
      row.SetField<string>(col, row.Field<string>(col).Trim());
一般来说,不要使用LINQ 修改源代码。查询不应该产生副作用。

我不确定是否可以在DataTable上应用LINQ Select语句,并在String类上使用Trim()来实现您的目标。但是作为数据库开发人员,我建议对SQL查询采取行动,并使用Rtrim(Ltrim(field1)) as field1上的查询,以摆脱数据表前的空格。

数据表的扩展方法:

 public static void trimData(DataTable dt)
 {
            foreach (DataColumn c in dt.Columns)
                if (c.DataType == typeof(string))
                    foreach (DataRow r in dt.Rows)
                        try
                        {
                            r[c.ColumnName] = r[c.ColumnName].ToString().Trim();
                        }
                        catch
                        { }
 }
数据集的

:

public static void trimData(DataSet ds)
{
     foreach (DataTable t in ds.Tables)
       trimData(t);
}