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.
If your parameters have all the same type (here string) you can use params keyword with string array.

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

```

Thus you can call it like below

```
Select(myQuery, param1, param2, ...);

```