Question: ```
List<string> names = new List<string>() { "John", "Anna", "Monica" };
var result = String.Join("", names.ToArray());

```

I would like to Join only 1 specific character from each string. Let's say, the 3rd one. Without loop if possible.

```
// result = "hnn"

```

Answer: 
To Add to the Linq answers, the simplest one would likely be:

```
var result = new string(names.Where(name => name.Count() >= 3).Select(x => x[2]).ToArray());

```

To break that down, you first filter the list to make sure there is no name that is too short:

```
var filteredNames = names.Where(name => name.Count() >= 3);

```

Then you can actually select each corresponding character in the filtered names:

```
var resultingCharacters = filteredNames.Select(name => name[2]).ToArray;

```

And you can just seamlessly chain those calls together to create the solution named above.  

Also you don't even need a Join in this case because you can just pass the resulting char array into a string constructor:

```
var result = new string(resultingCharacters);

```

You can also easily extract that to a function:

```
public static string JoinNthCharacters(List<string> names, int n) {
    return new("", names.Where(name => name.Count() >= n).Select(name => name[n]).ToArray());
}

```
You can do this with LINQ:

```
List<string> names = new List<string>() { "John", "Anna", "Monica" };
var result = String.Join
    (
        "",
        from x in names
        select x[2]
    );

```