Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Building SQL "where in" statement from list of strings in one line?

Tags:

c#

sql

vb.net

I have a List(Of String) which corresponds to "types" on our database table.

We are using the DB2 ADO.NET provider and my final query needs to look something like this:

select * from table where type in (@type1, @type2, @type3, @type4)

In the past, I've built the list of query parameters / host variables using a ForEach loop, but I would really like to figure out a way to build them in one line. Of course, I can join all of the strings, but adding the "@" and the incrementing digit is giving me headaches.

Anyone have any ideas on how to do this?

like image 812
TaylorOtwell Avatar asked Jun 07 '11 22:06

TaylorOtwell


2 Answers

Won't something like this work?

var inList = "(" + string.Join(", ", typeList.Select(t => "@" + t)) + ")";

Edit

Based on your comment, how about this?

var inList = "(" + 
    string.Join(", ", Enumerable.Range(1, argCount).Select(i +> "@type" + i)) +
    ")";
like image 192
StriplingWarrior Avatar answered Sep 18 '22 02:09

StriplingWarrior


This is how I generally do this

string.Join(",", items.Select(i => $"'{i}'");
like image 38
Jimmy Avatar answered Sep 18 '22 02:09

Jimmy