Construir cláusula Where dinámicamente en Ado.net C #

Tomaré alrededor de 1000 registros en un momento dado y tengo que determinar si son registros existentes o registros nuevos.

Si existen, tengo que actualizar los registros, si son nuevos, simplemente insértelos. No sabré si alguno de ellos existirá o si todos existirán.

ensé que sería mejor hacer una consulta a la base de datos e intentar encontrar si alguna de ellas existe en el db y almacenarla en la memoria y verificar esa colección en la memoria y verificar eso.

Originalmente me dijeron que 1 campo sería suficiente para determinar la unicidad. Así que pensé que podría hacer 1 cláusula grande en contra de 1 campo en la base de datos, pero ahora descubrí que ese no es el caso y necesito usar 3 campos para determinar si el registro existe o ahora.

Esto es básicamente una y cláusula

select * from where columnA = "1" and ColumnB = "2" and ColumnC = "3"

¿Cómo puedo corregir esto correctamente en C # ado.net

Supongo que tendré que tener como una cláusula super where?

select * from where (columnA = "1" and ColumnB = "2" and ColumnC = "3") or  (columnA = "4" and ColumnB = "5" and ColumnC = "6") or [....998 more conditional clauses)

Estoy abierto a mejores ideas si es posible. Sigo pensando que hacerlo de una vez es mejor que hacer 1000 consultas separadas.

Respuestas a la pregunta(2)

Su respuesta a la pregunta