Есть ли Enum изначально в .NET для сортировки по возрастанию или по убыванию?
Мне нужно использовать концепцию упорядочения в разных библиотеках, и я хочу по возможности слабую связь.
Есть ли Enum изначально в .NET для сортировки по возрастанию или по убыванию?
Мне нужно использовать концепцию упорядочения в разных библиотеках, и я хочу по возможности слабую связь.
В .NET более 8 перечислений сортировки. Это говорит о том, что даже инженеры Microsoft заново изобретут колесо. Также интересно, насколько дико варьируются практики комментирования и стиль кода.
Вот те, которые я нашел:
System.ComponentModel.ListSortDirection
public enum ListSortDirection {
/// <devdoc>
/// <para>Sort in ascending order.</para>
/// </devdoc>
Ascending,
/// <devdoc>
/// <para>Sort in descending order.</para>
/// </devdoc>
Descending
}
System.Data.SqlClient.SortOrder
public enum SortOrder {
Unspecified = -1,
Ascending = 0,
Descending = 1
}
System.Data.Linq.SqlClient.SqlOrderType
internal enum SqlOrderType {
Ascending,
Descending
}
System.DirectoryServices.SortDirection
public enum SortDirection
{
//
// Summary:
// Sort from smallest to largest. For example, A to Z.
Ascending,
//
// Summary:
// Sort from largest to smallest. For example, Z to A.
Descending
}
System.Windows.Forms.SortOrder
/// <include file='doc\SortOrder.uex' path='docs/doc[@for="SortOrder"]/*' />
/// <devdoc>
/// <para>
/// Specifies how items in
/// a list are sorted.
/// </para>
/// </devdoc>
public enum SortOrder {
/// <include file='doc\SortOrder.uex' path='docs/doc[@for="SortOrder.None"]/*' />
/// <devdoc>
/// <para>
/// The items are
/// not sorted.
/// </para>
/// </devdoc>
None = 0,
/// <include file='doc\SortOrder.uex' path='docs/doc[@for="SortOrder.Ascending"]/*' />
/// <devdoc>
/// <para>
/// The items
/// are sorted in ascending order.
/// </para>
/// </devdoc>
Ascending = 1,
/// <include file='doc\SortOrder.uex' path='docs/doc[@for="SortOrder.Descending"]/*' />
/// <devdoc>
/// <para>
/// The items are
/// sorted in descending order.
/// </para>
/// </devdoc>
Descending = 2,
}
System.Web.Helpers.SortDirection
public enum SortDirection {
Ascending,
Descending
}
System.Web.UI.WebControls.SortDirection
public enum SortDirection {
Ascending = 0,
Descending = 1
}
public enum XmlSortOrder {
Ascending = 1,
Descending = 2,
}
System.Data.Common.EntitySql.AST.OrderKind
/// <summary>
/// Represents order kind (none=asc,asc,desc).
/// </summary>
internal enum OrderKind
{
None,
Asc,
Desc
}
Изменение: еще один прибыл, так как это было первоначально опубликовано.
System.Web.UI.DataVisualization.Charting
/// <summary>
/// Sorting order (Ascending or Descending).
/// </summary>
public enum PointSortOrder
{
/// <summary>
/// Ascending sorting order
/// </summary>
Ascending,
/// <summary>
/// Descending sorting order
/// </summary>
Descending
}
SortOrder и ListSortDirection - два действительный выбор, но помните об этом:
Интересный вопрос, относящийся к Windows.Forms.SortOrder и Data.SqlClient.SortOrder
При проверке первый имеет значения:
public enum SortOrder
{
None = 0,
Ascending = 1,
Descending = 2,
}
а второй - значения:
public enum SortOrder
{
Unspecified = -1,
Ascending = 0,
Descending = 1,
}
Наверное, хорошая идея быть последовательной, особенно если сериализация.
Есть два, о которых я знаю: SortDirection и SortOrder
Одно быстрое предупреждение состоит в том, что они находятся в пространствах имен System.Web.UI.WebControls
и System.Windows.Forms
, соответственно, поэтому существует вероятность, что они могут не применяться для семантического действия.