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: 
Personally, I would expect at least one overload that grants me the ability to pass a params array:

```
public DataTable Select(string query, params string[] parameters);

```

That would allow me to call it with parameters like this:

```
Select("SELECT FROM WHERE", "3", "17", "Joe");

```

Anyone having an `IEnumerable<>` could pass it in easily, too:

```
Select("SELECT FROM WHERE", myData.ToArray());

```

Better would be an overload doing this for me.
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);

```