C# 查找具有相同公共节点的链接

C# 查找具有相同公共节点的链接,c#,C#,查找从节点到节点共享相同链接的最快方法是什么 所以我有一个链接列表,每个链接都有一个FromNode和ToNode。 我不确定最快的方法是什么来找到那些有公共节点的链接。在列表中循环,并检查每个链接的节点,听起来要花很长时间才能找到这些链接。我应该考虑什么其他方法? 下面的图片是为了让事情更清楚 如图所示,链路1和2共享B和C节点。链接6,7共享Z和X 所以结果就是这些联系 任何想法都会有帮助您可以在列表中使用LINQ 假设您有链接类: public class Links { pub

查找从节点到节点共享相同链接的最快方法是什么

所以我有一个链接列表,每个链接都有一个FromNode和ToNode。 我不确定最快的方法是什么来找到那些有公共节点的链接。在列表中循环,并检查每个链接的节点,听起来要花很长时间才能找到这些链接。我应该考虑什么其他方法?

下面的图片是为了让事情更清楚

如图所示,链路1和2共享B和C节点。链接6,7共享Z和X 所以结果就是这些联系


任何想法都会有帮助

您可以在列表中使用LINQ

假设您有链接类:

public class Links
{
    public string FromNode { get; set; }
    public string ToNode { get; set; }
}
然后,您只需使用LINQ简单地获得结果:

var links = new List<Links>
            {
                new Links{FromNode = "B", ToNode = "C"},
                new Links{FromNode = "C", ToNode = "B"},
                new Links{FromNode = "A", ToNode = "D"}
            };


        var res = from a in links
                  join b in links
                  on
                  new { FromNode = a.FromNode, ToNode = a.ToNode } equals
                  new { FromNode = b.ToNode, ToNode = b.FromNode }
                  select new { a.FromNode, a.ToNode };
var links=新列表
{
新链接{FromNode=“B”,ToNode=“C”},
新链接{FromNode=“C”,ToNode=“B”},
新链接{FromNode=“A”,ToNode=“D”}
};
var res=来自链接中的
加入b的链接
在…上
新的{FromNode=a.FromNode,ToNode=a.ToNode}等于
新建{FromNode=b.ToNode,ToNode=b.FromNode}
选择新的{a.FromNode,a.ToNode};

从您正在考虑的解决方案开始。然后看看哪里可以改进它。我通常是这样的项目保留一个所有节点的列表,这样我就可以枚举所有链接,而不必遍历所有路径。然后用两个for循环解决了这个问题,就像一个泡泡排序i=0到N-1,j=i+1到N。