Question: I'm writing a simple C# class that handle SQL queries in a specific contest. Most of the queries will be `SELECT` statement with 3-4 parameters that should be escaped properly, so the function will be something like this

```
public DataTable Select(string query, string[] parameters) {
    # some code
}

```

Should `parameters` be an `Array` or a `List<>`? Is there some best practice when choosing between these two types as function parameter or is it just a matter of preferences?

P.S. I usually prefer `List<>` because of the flexibility but here the possibility to create an `Array` on the fly is a good point.

Answer: 
On top of what nvoig said, I would:

```
public DataTable Select(string query, params string[] parameters)
{
    return Select(query, (IEnumerable<string>)parameters);
}

public DataTable Select(string query, IEnumerable<string> parameters)
{
    return null;
}

```

so that if you have a "static" query, you can use the first overload (because you know at compile time the number of parameters), while if you have a "dynamic" query you can use the second overload with a `string[]` or a `List<string>` or the result of a LINQ expression.
In general I would use `IEnumerable<T>` if you only read from the sequence.

In this particular context however I'd simply use a `params string[]` or even `params object[]` type since then you can use it like `String.Format`, i.e.

```
var dt = Select("select A from Table where X=? and Y=?", value1, value2);

```