<p>Is there any way to clean up this type of loop using LINQ?</p>

<pre><code>  List&lt;Car&gt; result;
  List&lt;string&gt; makes;
  List&lt;string&gt; models;

  for (int i = 0; i &lt; makes.Count() &amp;&amp; i &lt; models.Count(); i++)
  {
    result.Add(new Car() { Make = makes[i], Model = models[i] });
  }
</code></pre>

<p>Basically I'm looking for some way to collate multiple arrays of individual fields into a single array of objects made up of those fields. </p>

You could use
```
Enumerable.Range
```
, like so:
```
```
List<Car> result = Enumerable.Range(0, Math.Min(makes.Count, models.Count))
    .Select(i => new Car { Make = makes[i], Model = models[i] }).ToList();
```
```
If
```
makes
```
and
```
models
```
always contain the same number of items, you can use more compact syntax:
```
```
List<Car> result = makes.Select((make, i) => new Car { Make = make, Model = models[i] }).ToList();
```
```