Question: To plot a graph (`networkx.DiGraph`), I am using the following code (looping over all edges):

```
arrow = Arrow(end=OpenHead(line_color=color, line_width=12, size=14),
                  y_start=pos[from_node][1],
                  x_start=pos[from_node][0],
                  x_end=pos[to_node][0],
                  y_end=pos[to_node][1],
                  line_color=color, line_width=12)
plot.add_layout(arrow)

```

I would like to use `multi_line` instead of this, but there is no way how to add arrows. Or is there any?

Answer: 
`Enumerable.GroupBy` allows you to pass custom equality comparer for keys. But in your case key is not an `Address` object - it's an anonymous object containing three properties - `SiteRefNum`, `SiteRefName` and `Address`. Of course passing `AddressComparer` to compare such keys will cause an error.

And your first problem was using complex object as key property. If you don't override `Equals` and `GetHashCode` methods for `Address` objects, then all addresses will be compared by reference. Which is of course different for each address instance. You can provide `Equals` and `GetHashCode` implementations to compare addresses.

Or you can modify your query to use address string for grouping:

```
var aggregated = 
    from s in sitesWithLive
    group s by new {
       s.SiteRefNum,
       s.SiteRefName,
       Address = s.Address.ToString() // here we group by string
    } into g
    select new Site
    {
        SiteRefNum = g.Key.SiteRefNum,
        SiteRefName = g.Key.SiteRefName,
        Address = g.First().Address, // here we just get first address object
        ContractLive = g.Max(x => x.ContractLive)
    };

```

You can use method syntax for query, but I find declarative query syntax more readable :)
You can try to override Equals and GetHashCode in your Address class (like in your comparer):

```
public override bool Equals(object obj)
{
    Address adr = obj as Address;
    if (adr != null)
        return adr.ToString() == this.ToString();
    return false;
}

public override int GetHashCode()
{
    return this.ToString().GetHashCode();
}

```