2017-07-16 17 views
-1

Was ist der schnellste Weg zum Finden von Links, die genau dasselbe von Knoten und Knoten teilen.Finden Sie Links, die die gleichen Knoten gemeinsam haben

so habe ich eine Liste von Links, jeder Link hat einen FromNode und ToNode. Ich bin nicht sicher, wie der schnellste Weg wäre, jene Verbindungen zu finden, die allgemeine Knoten haben. Das Durchlaufen der Liste und Überprüfen der Knoten jeder Verbindung klingt so, als würde es lange dauern, diese Verbindungen zu finden. Welche anderen Ansätze sollte ich berücksichtigen?

Bild unten ist angebracht, um die Dinge klarer zu machen.

enter image description here

Wie das Bild indecated verknüpft 1 und 2 Aktien B und C-Knoten. Links 6,7 teilen Z und X so wäre das Ergebnis diese Links.

wäre Irgendwelche Ideen hilfreich

+0

Beginnen Sie mit der Lösung, die Sie darüber nachdenken. Dann schau, wo du es verbessern kannst. – Guy

+0

Normalerweise habe ich Projekte, die eine Liste aller Knoten enthalten, damit ich alle Verbindungen aufzählen kann, ohne alle Pfade durchlaufen zu müssen. Also dann ist das Problem gelöst mit zwei for-Schleife wie eine Blase sortieren i = 0 bis N -1, j = i + 1 bis N. – jdweng

Antwort

1

Sie LINQ über Ihre Liste verwenden können.

Angenommen, Sie Ihre Verbindungen Klasse:

public class Links 
{ 
    public string FromNode { get; set; } 
    public string ToNode { get; set; } 
} 

Dazu einfach einfache LINQ Ihr Ergebnis erhalten mit:

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 }; 
Verwandte Themen