Select values from two collections
I would convert your fooColl to this:

IEnumerable&lt;ColumnItsValues&gt; foolCols = listColumns.Join(listValues,
            columns =&gt; columns.PropertyID,
            values =&gt; values.PropertyID,
            (columns, values) =&gt; new ColumnItsValues 
                                 {
                                     ColumnName = columns.ColumnName,
                                     ValueOfColumn = values.ValueOfColumn
                                  });


in this way you're using a type you already know (ColumnItsValues), which make it more extendable/testable/readable.
About where == vs equals, I suggest to take a read to this blog post.

Alternatively, if as required by comments, you can change fooCols in this way:

IList&lt;ColumnItsValues&gt; foolCols = listColumns.Join(listValues,
            columns =&gt; columns.PropertyID,
            values =&gt; values.PropertyID,
            (columns, values) =&gt; new ColumnItsValues 
                                 {
                                     ColumnName = columns.ColumnName,
                                     ValueOfColumn = values.ValueOfColumn
                                  }).ToList();


or 

ColumnItsValues[] foolCols = listColumns.Join(listValues,
            columns =&gt; columns.PropertyID,
            values =&gt; values.PropertyID,
            (columns, values) =&gt; new ColumnItsValues 
                                 {
                                     ColumnName = columns.ColumnName,
                                     ValueOfColumn = values.ValueOfColumn
                                  }).ToArray();


Depends on which additional functionalities you need and on your final purpose. My choice usually is try to keep my objects as simple and lightweight as possible. Both the array and the list extends IEnumerable&lt;T&gt;: IList&lt;T&gt; gives the capability to insert/remove at a given index and, since it is an extension of ICollection&lt;T&gt; permits you Add, Clear or check if it Contains an element, on the other hand if you keep using arrays (ColumnValues[]) the lenght would be immutable.