Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/319.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 根据数字而非字母顺序对数据表进行排序_C#_Sorting - Fatal编程技术网

C# 根据数字而非字母顺序对数据表进行排序

C# 根据数字而非字母顺序对数据表进行排序,c#,sorting,C#,Sorting,我有一个数据表dt1: Name Amount ---- ----- A 10 B 15 C 5 D 22 E 16 F 30 G 31 在c#中,我希望根据下拉框中的用户选择,根据从低到高或从低到高对数据进行排序。我正在使用这个函数,但它总是按字母顺序排序,如10,15,16,22,30,31,5。任何人都可以告诉我应该用什么来排序数据 protected void ddlHotelAPISearchBoxSorting_Select

我有一个数据表dt1:

Name Amount
----  -----
A     10
B     15
C     5
D     22
E     16
F     30
G     31
在c#中,我希望根据下拉框中的用户选择,根据从低到高或从低到高对数据进行排序。我正在使用这个函数,但它总是按字母顺序排序,如10,15,16,22,30,31,5。任何人都可以告诉我应该用什么来排序数据

protected void ddlHotelAPISearchBoxSorting_SelectedIndexChanged(object sender, EventArgs e)
    {
        DataTable dt2 = new DataTable();
        dt2 = dt1;

        DataView dv = new DataView(dt1);

        if (ddlHotelAPISearchBoxSorting.SelectedValue == "Low_Price_First")
        {
            //dt2.DefaultView.Sort = "CalculatedPrice ASC";
            dv.Sort = "CalculatedPriceWithNoSymbol ASC";
        }
        else if (ddlHotelAPISearchBoxSorting.SelectedValue == "High_Price_First")
        {
            dv.Sort = "CalculatedPriceWithNoSymbol DESC";
        }
        else if (ddlHotelAPISearchBoxSorting.SelectedValue == "Best_Match")
        {
        }
        DataList1.DataSource = dv.ToTable();
        DataList1.DataBind();
    }

dv.Sort
是一个字符串,包含列名,后跟“ASC”(升序)或“DESC”(降序)。如果示例中的
“Amount”
是要按其对数据进行排序的列名,则可以尝试此
dv.sort=“Amount ASC”
您需要一个用于数据视图的
自定义比较器。默认情况下,
数据视图排序比较字符串
,对于字符串,
16
位于
5
之前

这是您如何使用NoSymbol按
CalculatedPrice的
int
值升序排序的方法:

DataTable dt2 = new DataTable();

// Create temporary list to sort rows by int value.
List<DataRow> rows = new List<DataRow>();
foreach (DataRow row in table.Rows)
{
   rows.Add(row);    
}

// Sort list in ascending order
rows.Sort(delegate(DataRow row1, DataRow row2)
     {
         return ((int)row1["CalculatedPriceWithNoSymbol"])
                  .CompareTo(((int)row2["CalculatedPriceWithNoSymbol"]));
     });

// Add sorted rows back to datatable.
foreach (DataRow row in rows)
{
    dt2.Rows.Add(row.ItemArray);
}

DataList1.DataSource = dt2;
DataList1.DataBind();
DataTable dt2=newdatatable();
//创建临时列表以按int值对行进行排序。
列表行=新列表();
foreach(table.Rows中的DataRow行)
{
行。添加(行);
}
//按升序对列表进行排序
排序(委托(数据行第1行、数据行第2行)
{
返回((int)第1行[“CalculatedPriceWithNoSymbol”])
.与(((int)第2行[“计算价格不带符号]))相比;
});
//将已排序的行添加回datatable。
foreach(数据行中的行)
{
dt2.Rows.Add(row.ItemArray);
}
DataList1.DataSource=dt2;
DataList1.DataBind();

如果您的
金额
列是一个字符串,那么奇怪的是,它作为字符串进行整理。考虑把它转换成代码>十进制< /代码>或<代码> int >代码>:如果您这样做,它将按照您的期望进行排序。

是您的代码> CalculatedPriceWithNoSymbol < /代码>列作为字符串返回吗?我想这只是一个打印错误。即使这样,如果Amount是字符串数据类型,您的答案也不起作用。