У меня естьLINQ, создавая уникальную коллекцию из коллекции
class Vertex{
Graph _graph;
float x;
float y;
string key;
//and some similar atributes
public IEnumerable<Edge> Edges{
get{
return _graph.Edges.Where(s => s.Source == this);
}
}
}
class Edge{
Graph _graph;
Vertex source;
Vertex target;
}
class Graph
{
private VertexCollection _vertexCollection; // extends List<Vertex>
private EdgeCollection _edgeCollection; //extends List<Edge>
public IEnumerable<Vertex> Vertexes
{
get
{
return _vertexCollection;
}
}
public IEnumerable<Edge> Edges
{
get
{
return _edgeCollection;
}
}
public IDictionary<Edge, bool> DrawableEdges
{
get
{
//want to return my uniq dictionary
}
}
Edges
и Vertexes
собраны в списки
Некоторые примеры:
A-->B // edge from vertex A to B
B-->C // edge from vertex B to C
C-->A // edge from vertex C to A
A-->C // edge from vertex A to C -- this is two way edge
Так что я хотел бы сделать IDictionary<Edge, bool>
, который бы (A -> B и B -> A будет как 1), а bool - если это два пути или нет.
Мне нужно это, потому что, когда я рисую их сейчас, он рисует 2 стрелы друг под друга. Я бы лучше сделал 1 стрелу.
Так что я довольно застрял прямо здесь ... Может кто-нибудь мне немного помочь?
Пожалуйста, покажите определение Края и классы Vertex – sll