Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/279.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# C基于条件的排序列表_C# - Fatal编程技术网

C# C基于条件的排序列表

C# C基于条件的排序列表,c#,C#,我想根据从和到的模式对列表进行排序 public class Group { public string From {get;set;} public string To { get; set; } } 我有一个从DB填充的组列表,它没有按顺序填充 List<Group> myGroup = new List<Group>(); 我的组按以下顺序包含项目: Fr To 534-527 111-534 527-535 534-111

我想根据从和到的模式对列表进行排序

public class Group
{         
    public string From {get;set;}
    public string To { get; set; }
}
我有一个从DB填充的组列表,它没有按顺序填充

List<Group> myGroup = new List<Group>();
我的组按以下顺序包含项目:

Fr To 534-527 111-534 527-535 534-111 527-534 应按以下顺序重新安排

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


有没有办法解决这个问题?

您所描述的问题可以表述为使用循环访问有向图中的所有节点。这不是嗯。。。分类

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


您可能会对此链接感兴趣:

您描述的问题可以表述为访问带循环的有向图中的所有节点。这不是嗯。。。分类

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


您可能对该链接感兴趣:

我们如何知道第一个534-X值应该是534-111而不是534-527?我们如何知道第一个534-X值应该是534-111而不是534-527?
    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();
    }