Lista de clasificación C # basada en una condición -- # camp Relacionados El problema

C# Sorting List based on a condition


1
vote

problema

Español

Quiero ordenar una lista basada en un patrón desde y para

  public class Group {              public string From {get;set;}     public string To { get; set; } }   

Tengo una lista de grupo poblado de DB, que no está poblado en orden

  List<Group> myGroup = new List<Group>();   

Mi grupo contiene artículos en orden a continuación:

 FR para 534-527 111-534 527-535 534-111 527-534 

debe volver a disponer en el siguiente orden

 527-534 534-111 111-534 534-527 527-535 
      public List<Group> SortRepHistoryList(List<Group> group)     {         LinkedList<Group> sortedList = new LinkedList<Group>();          var tempFrom = group.Select(t => t.From).ToList();         Group lastItem = group.FirstOrDefault(g => !tempFrom.Contain(g.To));          sortedList.AddLast(lastItem);         group.Remove(lastItem);          while (group.Any())         {             var prev = group.Where(g => g.To.Equals(lastItem.From));             if (null == prev)             {                 return sortedList.ToList();             }              else if (prev.Count() == 1)             {                 sortedList.AddFirst(prev.First());                 lastItem = prev.First();                 group.Remove(lastItem);             }             else if (prev.Count() > 1)             {              }         }         return sortedList.ToList();     }   

Esto representa los datos del historial de cambios de un código a otro código, por ejemplo, el código inicial es 527 que se modifica a 534 en una instancia, nuevamente 534 modificado a 111, nuevamente 111 modificado a 534, nuevamente 534 modificado a 527, nuevamente 527 modificado a 535, por lo que aquí el último código es 535 y el valor más antiguo es 527 (recuerde que no será cualquier duplicado aquí)

¿Hay alguna manera de manejar esto?

Original en ingles

I want to sort a list based on a pattern from and to

public class Group {              public string From {get;set;}     public string To { get; set; } } 

I have a list of group populated from DB, which is not populated in order

List<Group> myGroup = new List<Group>(); 

My Group contains items in order below:

 Fr  To 534-527 111-534 527-535 534-111 527-534 

It should be Re-Arranged in the below order

 527-534 534-111 111-534 534-527 527-535 
    public List<Group> SortRepHistoryList(List<Group> group)     {         LinkedList<Group> sortedList = new LinkedList<Group>();          var tempFrom = group.Select(t => t.From).ToList();         Group lastItem = group.FirstOrDefault(g => !tempFrom.Contain(g.To));          sortedList.AddLast(lastItem);         group.Remove(lastItem);          while (group.Any())         {             var prev = group.Where(g => g.To.Equals(lastItem.From));             if (null == prev)             {                 return sortedList.ToList();             }              else if (prev.Count() == 1)             {                 sortedList.AddFirst(prev.First());                 lastItem = prev.First();                 group.Remove(lastItem);             }             else if (prev.Count() > 1)             {              }         }         return sortedList.ToList();     } 

This represents the data of Change History from one code to other code, for example, the initial code is 527 which is modified to 534 on one instance, again 534 modified to 111, again 111 modified to 534, again 534 modified to 527, again 527 modified to 535, so here the latest code is 535 and the oldest value is 527 ( remember there wont be any duplicates here )

Is there is way to handle this?

  
 
 

Lista de respuestas

0
 
vote

El problema que describió puede formularse como visitando todos los nodos en el gráfico dirigido con bucles. No es hm ... clasificación.

Así que digamos que el nodo tiene un número asociado con él. Y hay un borde de un nodo a otro. La lista de bordes visitantes en el orden de visitar es la salida.

Este enlace puede ser de interés para usted: https://en.wikipedia.org/wiki / TARJAN% 27s_strongly_connectected_components_algorithm

 

The problem you described can be formulated as visiting all the nodes in the directed graph with loops. It is not hm... sorting.

So let's say that the node has a number associated with it. And there is an edge from one node to another. The list of visiting edges in the order of visiting is the output.

This link can be of interest to you: https://en.wikipedia.org/wiki/Tarjan%27s_strongly_connected_components_algorithm

 
 

Relacionados problema

65  Decodificación T-SQL FUNCIONES EN C # / VB.NET  ( Decoding t sql cast in c vb net ) 
Recientemente, nuestro sitio ha sido desalentado con el resurgimiento de la asprox botnet inyección de SQL Ataque. Sin entrar en detalles, el ataque inten...

141  Llenando un conjunto de datos o un DataTable desde un conjunto de resultados de consulta LINQ  ( Filling a dataset or a datatable from a linq query result set ) 
¿Cómo expone una consulta LINQ como un servicio web de ASMX? Por lo general, desde el nivel de negocios, puedo devolver un double20 998877766220 998877766...

1955  ¿Cómo calculo la edad de alguien en función de un cumpleaños tipo DateTime?  ( How do i calculate someones age based on a datetime type birthday ) 
Dado un Form5 que representa el cumpleaños de una persona, ¿cómo calculo su edad en años? ...

701  Cómo convertir decimal a doblarse en C #  ( How to convert decimal to double in c sharp ) 
Quiero usar un Track-Bar para cambiar una opacidad double1 . Este es mi código: decimal trans = trackBar1.Value / 5000; this.Opacity = trans; Cuan...

55  Comprimiendo / descomprimiendo carpetas y archivos  ( Compressing decompressing folders files ) 
¿Alguien sabe de una buena manera de comprimir o descomprimir archivos y carpetas en C # rápidamente? Manejo de grandes archivos podría ser necesario. ...

65  Punto flotante Número de análisis: ¿Hay un algoritmo de captura?  ( Floating point number parsing is there a catch all algorithm ) 
Una de las partes divertidas de la programación multicultural son los formatos de números. Los estadounidenses usan 10,000.50 los alemanes usan 10.000,50...

1563  Calcular el tiempo relativo en C #  ( Calculate relative time in c sharp ) 
Dado un valor específico double16 , ¿cómo mostrar el tiempo relativo, como: hace 2 horas hace 3 días hace un mes ...

105  Temporizador confiable en una aplicación de consola  ( Reliable timer in a console application ) 
Soy consciente de que en .NET Hay tres tipos de temporizador (consulte Comparando las clases de temporizador en la biblioteca de clase de Framework ). H...

80  ¿Cómo imprimo un documento HTML de un servicio web?  ( How do i print an html document from a web service ) 
Quiero imprimir HTML desde un servicio web C #. El control del navegador web está exagerado, y no funciona bien en un entorno de servicio, ni funciona bien en...

107  ¿Cómo obtengo una lista distinta y ordenada de nombres de un DataQ usando LINQ?  ( How do i get a distinct ordered list of names from a datatable using linq ) 
Tengo un DataTable con una columna Name . Quiero generar una colección de los nombres únicos ordenados alfabéticamente. La siguiente consulta ignora la clá...




© 2022 respuesta.top Reservados todos los derechos. Centro de preguntas y respuestas reservados todos los derechos