c#基于条件的排序列表

本文关键字:排序 列表 条件 于条件 | 更新日期: 2023-09-27 18:04:49

我想对一个基于from和to模式的列表进行排序

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

我有一个从DB填充的组列表,它不是按顺序填充的

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

My Group按以下顺序包含条目:

<>之前Fr,534 - 527111 - 534527 - 535534 - 111527 - 534之前

应按以下顺序重新排列

<>之前527 - 534534 - 111111 - 534534 - 527527 - 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();
    }

这表示从一个代码到另一个代码的更改历史数据,例如,初始代码是527,在一个实例中修改为534,再次534修改为111,再次111修改为534,再次534修改为527,再次527修改为535,所以这里最新的代码是535,最旧的值是527(记住这里不会有任何重复)

有办法处理这个吗?

c#基于条件的排序列表

你描述的问题可以表述为用循环访问有向图中的所有节点。不是他……排序。

假设节点有一个与之相关联的数字。从一个节点到另一个节点有一条边。输出以访问顺序排列的访问边列表。

您可能对这个链接感兴趣:https://en.wikipedia.org/wiki/Tarjan%27s_strongly_connected_components_algorithm