我在使用DataTable.Select()时遇到了问题,匹配值可能包含前导空格,需要正确修剪才能返回正确数量的记录。
目前,我的代码返回的记录较少,因为匹配由于不需要的字符而失败。
如何按照下面的示例DataTable.Select进行处理?
SELECT * FROM Table WHERE LTRIM(FullName) = ' Joe Smith'我试过了
dataTable.Select("LTRIM(FullName) = ' Joe Smith'");但它失败了。
有什么想法吗?
发布于 2013-10-10 15:32:07
我建议改用Linq-To-DataSet,这会让它更清晰,更容易维护:
var rows = from row in dataTable.AsEnumerable()
where row.Field<string>("FullName").Trim() == "Joe Smith"
select row;如果你想使用LTRIM,你只需要用TrimStart替换Trim即可。
如果你想要一个数组或列表,使用ToArray或ToList,例如
DataRow[] rowsArray = rows.ToArray();或者是一个DataTable
dataTable = rows.CopyToDataTable();编辑:如果你坚持使用DataTable.Select或者你不能使用linq,这应该可以工作(LTRIM is not supported):
rowsArray = dataTable.Select("TRIM(FullName) = 'Joe Smith'");发布于 2013-10-10 15:39:05
试一试:
string searchTerm = " Joe Smith";
string expression = String.Format("TRIM(FullName) = '{0}'", searchTerm.Trim());
dataTable.Select(expression);发布于 2015-06-23 21:34:14
DataTable excelData = objGetExcelData.DataExcel(objEntities.StrFilePath, ConfigSettings.GetAppConfigValue("select * from sheet1"));
StringBuilder strInput = new StringBuilder();
DataView view = new DataView(excelData);
DataTable distinctValues = view.ToTable(true, "GROUP_NAME");
if (distinctValues.Rows.Count > 0)
{
for (int i = 0; i < distinctValues.Rows.Count; i++)
{
strGroupName = Convert.ToString(distinctValues.Rows[i]["GROUP_NAME"]);
foreach (DataRow item in excelData.Select("GROUP_NAME = '" + strGroupName + "'"))
{
strInput.Append(Convert.ToString(item[0]));
strInput.Append("~");
strInput.Append(Convert.ToString(item[1]));
strInput.Append(",");
strDasID = Convert.ToString(item[0]);
}
}
}https://stackoverflow.com/questions/19289597
复制相似问题