I have a collection of objects

```
ObservableCollection<ISettingNode> nodes = new ObservableCollection<ISettingNode>() {
      new Node("Node1", tabs1);
      new Node("Node1", tabs2);
      new Node("Node1", tabs3);
      new Node("Node2", tabs4);
      new Node("Node3", tabs5);
}

```

Could you please tell, how from this collection I can get a collection, where all object with equal Name will be united in one object. In my case I want to have first three elements of the collection as one which would be like Node("Node1", tabs) where tabs equal tabs1 + tabs2 + tabs3?
So the result would be:

```
ObservableCollection<ISettingNode> nodes = new ObservableCollection<ISettingNode>() {
      new Node("Node1", tabs);
      new Node("Node2", tabs4);
      new Node("Node3", tabs5);
}

```

I know how to do it without Linq, but it has to much code. I would like to get it using **Linq**, but I can not understand how to write a query.

Nodes objects are represented by simple class:

```
  public class SettingNode : ISettingNode
    {
        public string Name { get; private set; }
        public IEnumerable<ISettingTab> Tabs { get; private set; }
    }

```