I have following list of *Item* objects in c#:

```
public class Item
{
    public int Id { get; set; }
    public List<string> Orders { get; set; }
}

List<Item> item = new List<Item>() { 
               new Item() { Id = 1, Code = 23, Orders = new List<string>() { "A", "B" }},
               new Item() { Id = 2, Code = 24, Orders = new List<string>() { "C", "D" }},
               new Item() { Id = 1, Code = 23, Orders = new List<string>() { "E", "F" }},
               new Item() { Id = 3, Code = 25, Orders = new List<string>() { "G", "H" }}
              };

```

I want to concat the Orders whose Id is same, so the output of above list should be:

```
    { 
      new Item() { Id = 1, Code = 23, Orders = new List<string>() { 'A', 'B', 'E', 'F' },
      new Item() { Id = 2, Code = 24, Orders = new List<string>() { 'C', 'D' },
      new Item() { Id = 3, Code = 25, Orders = new List<string>() { 'G', 'H' }
    };

```

How can i do this efficiently in c# ( using linq if possible ) ?