如何在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
相关产品推荐
相关产品推荐

