valor recorrer que pasar parse parametro obtener enumerador enum convertir convert como c# .net order

recorrer - pasar enum como parametro c#



¿Existe un Enum para ordenar Asc o Desc en.NET? (5)

¿Hay un Enum nativamente en .NET para ordenar Asc o Desc? Necesito usar el concepto de ordenamiento en diferentes bibliotecas, y quiero un acoplamiento flexible como sea posible.


Hay dos que conozco: SortDirection y SortOrder

Una advertencia rápida es que se encuentran en los espacios de nombres System.Web.UI.WebControls y System.Windows.Forms , respectivamente, por lo que existe la posibilidad de que no se apliquen semánticamente a lo que está haciendo.


Hay más de 8 enumeraciones de clasificación en .NET. Va a mostrar, incluso en Microsoft los ingenieros reinventan la rueda. También es interesante lo salvaje que varían las prácticas de comentarios y el estilo del código.

Estos son los que he encontrado:

  1. System.ComponentModel.ListSortDirection

    public enum ListSortDirection { /// <devdoc> /// <para>Sort in ascending order.</para> /// </devdoc> Ascending, /// <devdoc> /// <para>Sort in descending order.</para> /// </devdoc> Descending }

  2. System.Data.SqlClient.SortOrder

    public enum SortOrder { Unspecified = -1, Ascending = 0, Descending = 1 }

  3. System.Data.Linq.SqlClient.SqlOrderType

    internal enum SqlOrderType { Ascending, Descending }

  4. 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 }

  5. 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, }

  6. System.Web.Helpers.SortDirection

    public enum SortDirection { Ascending, Descending }

  7. System.Web.UI.WebControls.SortDirection

    public enum SortDirection { Ascending = 0, Descending = 1 }

  8. System.Xml.XPath.XmlSortOrder

    public enum XmlSortOrder { Ascending = 1, Descending = 2, }

  9. System.Data.Common.EntitySql.AST.OrderKind

    /// <summary> /// Represents order kind (none=asc,asc,desc). /// </summary> internal enum OrderKind { None, Asc, Desc }

Editar: llegó otro desde que se publicó originalmente.

  1. 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 }


Punto interesante relacionado con Windows.Forms.SortOrder y SortOrder

Tras la inspección, el primero tiene valores:

public enum SortOrder { None = 0, Ascending = 1, Descending = 2, }

mientras que el segundo tiene valores:

public enum SortOrder { Unspecified = -1, Ascending = 0, Descending = 1, }

Probablemente sea una buena idea ser consistente, especialmente si se trata de serialización.


SortOrder y ListSortDirection son dos opciones válidas, pero tenga en cuenta esto:

ListSortDirection :

  • disponible en .net verions 1.1 a 4 y silverlight.
  • el orden de clasificación es obligatorio: ListSortDirection solo tiene opciones "Ascendente" y "Descendente", por lo que el usuario también debe elegir una de ellas.

SortOrder :

  • disponible solo en las versiones 3.5 y 4. de .net. No es compatible con Silverlight.
  • el orden de clasificación es opcional: también tiene la opción "No especificado".