DataView.Sort - больше, чем просто asc / desc (требуется настраиваемая сортировка)
Хорошо, я просто быстро придумал aspx это и не выполнил всю необходимую asp.net-website обработку ошибок и нулевую c#.net проверку, но это должно дать aspx вам представление и должно c#-language быть достаточно, чтобы вы aspx начали:
public static class DataTableExtensions
{
public static DataView ApplySort(this DataTable table, Comparison comparison)
{
DataTable clone = table.Clone();
List rows = new List();
foreach (DataRow row in table.Rows)
{
rows.Add(row);
}
rows.Sort(comparison);
foreach (DataRow row in rows)
{
clone.Rows.Add(row.ItemArray);
}
return clone.DefaultView;
}
}
Использование:
DataTable table = new DataTable();
table.Columns.Add("IntValue", typeof(int));
table.Columns.Add("StringValue");
table.Rows.Add(11, "Eleven");
table.Rows.Add(14, "Fourteen");
table.Rows.Add(10, "Ten");
table.Rows.Add(12, "Twelve");
table.Rows.Add(13, "Thirteen");
// Сортировать asp.net-website по StringValue:
DataView sorted = table.ApplySort((r, r2) =>
{
return ((string)r["StringValue"]).CompareTo(((string)r2["StringValue"]));
});
Результат:
11 c#-language Eleven
14 четырнадцать
10 десять
13 asp-net тринадцать
12 Двенадцать
// Сортировать asp-net по IntValue:
DataView sorted = table.ApplySort((r, r2) =>
{
return ((int)r["IntValue"]).CompareTo(((int)r2["IntValue"]));
});
Результат:
10 csharp десять
11 Eleven
13 тринадцать
12 csharp Двенадцать
14 четырнадцать
РЕДАКТИРОВАТЬ: изменено aspx на метод расширения.
Теперь asp-net в вашей Lambda (или вы можете asp.net создать полномасштабный метод c#.net сравнения) вы можете выполнять aspdotnet любую настраиваемую логику visual-c# сортировки, которая вам нужна. Помните, что asp.net -1 меньше, 0 равно, а 1 больше.
c#
asp.net
DataView.Sort - больше, чем просто asc / desc (требуется настраиваемая сортировка)
Мы используем файлы cookies для улучшения работы сайта. Оставаясь на нашем сайте, вы соглашаетесь с условиями использования файлов cookies. Чтобы ознакомиться с нашими Положениями о конфиденциальности и об использовании файлов cookie, нажмите здесь.