You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在C# .NET 2.0中用string.Compare对DataTable前两列按匈牙利语排序?

在C# .NET 2.0中按匈牙利语规则对DataTable多列排序

需要在C# .NET 2.0环境下,使用string.Compare按照匈牙利语("hu-HU_technl")规则对DataTable的前两列进行排序;若无法实现多列排序,仅对第一列排序也可。我已实现将单列数据存入List<string>后排序的方案,但需要多列排序的方法,以下是我尝试的多列排序代码:

主函数代码

//----------------------------------------------Main
OleDbDataAdapter dAdapter = new OleDbDataAdapter(query, conn.ConnectionString);
DataSet ds = new DataSet();
dAdapter.Fill(ds, "Holtak");

DataTable tempTable = ds.Tables[0].Clone();

ds = utils.Settings.DataTableSort(ds, "hu-HU_technl");

ds.Tables[0].Columns.Add(new DataColumn("imageUrl", typeof(byte[])));

工具类排序方法

//----------------------------------------------utils.Settings.DataTableSort
public static DataSet DataTableSort(DataSet dt, string culture)
{
    CultureInfo ci = CultureInfo.GetCultureInfo(culture);
    StringComparer comp = System.StringComparer.Create(ci, false);

    List<DataRow> rows = new List<DataRow>();

    foreach (DataRow row in dt.Tables[0].Rows)
    {
        rows.Add(row);
    }

    rows.Sort(
        delegate(DataRow r1, DataRow r2)
        {
            int result = string.Compare((r1[2] == null ? "" : r1[2].ToString()), (r2[2] == null ? "" : r2[2].ToString()), false, ci);

            if (result == 0)
            {
                result = string.Compare((r1[3] == null ? "" : r1[3].ToString()), (r2[3] == null ? "" : r2[3].ToString()), false, ci);
            }

            return result;
        } 
    );

    DataSet dtresult = dt.Clone();

    foreach (DataRow dr in rows)
    {
        dtresult.Tables[0].Rows.Add(dr.ItemArray);
    }
    
    return dtresult;
}

内容的提问来源于stack exchange,提问作者Steve-M

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.09 13:32:57