修剪数据表的所有单元格
本文关键字:单元格 数据表 修剪 | 更新日期: 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);
}