如何在C# DataTable中按照a1, a2, a10, b1进行自定义顺序排序?
时间: 2024-10-20 21:14:35 浏览: 31
在C#中,DataTable默认按照列名的字典序进行排序。如果你想要按照a1, a2, a10, b1这个自定义顺序进行排序,你需要手动创建一个IComparer对象,并在Sort()方法中指定它。
首先,你需要定义一个比较器类,比如:
```csharp
public class CustomComparator : IComparer<DataRow>
{
public int Compare(DataRow row1, DataRow row2)
{
// 按照a1, a2, a10, b1的顺序比较
int result = string.Compare(row1["a1"].ToString(), row2["a1"].ToString());
if (result != 0) return result;
result = string.Compare(row1["a2"].ToString(), row2["a2"].ToString());
if (result != 0) return result;
result = string.Compare(row1["a10"].ToString(), row2["a10"].ToString());
if (result != 0) return result;
result = string.Compare(row1["b1"].ToString(), row2["b1"].ToString());
return result;
}
}
```
然后,在需要排序的地方,你可以这样做:
```csharp
CustomComparator comparer = new CustomComparator();
yourDataTable.DefaultView.Sort = "Column1 ASC, Column2 ASC, Column10 ASC, ColumnB1 ASC";
yourDataTable = yourDataTable.DefaultView.ToTable(); // 或者直接用comparer Sort
```
这里假设"Column1", "Column2", "Column10", 和 "ColumnB1"是你数据表中的实际列名。
阅读全文