我正在使用C#开发ASP.Net应用程序。我需要对一个名为“价格”的列的转换后的值对数据表中的行进行排序,这是出于某种未知的原因,是数据表中的字符串类型的列。
下面的代码段将为我提供有关Price列的字符串值的排序DataTable,但是我要寻找的是对Price列的Decimal值进行排序。
问题:Select
在此代码片段中,我需要对方法的第二个参数使用什么表达式?目前,此参数的值为Price asc
。
DataTable dt = GetData();
dt = dt.Select( null, "Price asc", DataViewRowState.CurrentRows).CopytoDataTable();
更新1
我能够在上面的代码片段中进行最小的更改,但是使用Price的十进制值进行排序。我使用该Convert
函数将Price列的字符串值转换为Decimal类型。DataTable表达式支持此功能。可以在以下位置找到此功能的详细信息:https : //msdn.microsoft.com/zh-cn/library/system.data.datacolumn.expression(v=vs.110).aspx
起作用的代码如下。
DataTable dt = GetData();
//define an expression column for decimal version of Price
dt1.Columns("Price1").Expression = "Convert(Price, 'System.Decimal')"
dt = dt.Select( null, "Price1 asc", DataViewRowState.CurrentRows).CopytoDataTable();
以下是将“ total”列中的值转换为“十进制类型”的转换函数示例。要转换的函数的第二个参数必须是要转换为的.Net类型的名称,并且应将其括在单引号中。
myDataColumn.Expression="Convert(total, 'System.Int32')"
我最好的主意是让您将这些值转换为十进制,对它们进行排序并将其复制回表中:
dt = dt.Rows.Cast<DataRow>().OrderBy(row => Convert.ToDecimal(row["Price"])).CopyToDataTable();
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句