# How to combine multiple lists with a custom sequence

Not sure if there's a algorithm to describe this problem but are there any elegant methods to combine the list in a custom sequence. For example:

``````List<string> list1 = new List<string>();
List<string> list2 = new List<string>();
List<string> list3 = new List<string>();

List<string> combined = new List<string>();
```
```

I would like the contents of combined to contain a sequence as follows:

``````a //First record in list1
d //First record in list2
g //First record in list3
b //Second record in list1
e //Second record in list2
h //Second record in list3
c //Third record in list1
f //Third record in list2
i //Third record in list3
```
```

The number of records in each list may not be equal.

EDIT

When the number of records in each list may not be equal i mean:

``````List<string> list1 = new List<string>();
List<string> list2 = new List<string>();
List<string> list3 = new List<string>();

List<string> combined = new List<string>();
```
```

Expected results:

``````a //First record in list1
b //First record in list2
d //First record in list3
c //Second record in list2
e //Second record in list3
f //Third record in list3
```
```

Not sure if there's a name. Merging? Splicing? But the code is easy.

``````var lists = new [] { list1, list2, list3 };
var combined = new List<string>(lists.Sum(l => l.Count));

for (var i = 0; i < lists.Max(l => l.Count); i++)
{
foreach (var list in lists)
{
if (i < list.Count)
}
}
```
```