In-Line SQL Statements

Original V16 Statement

var filterOriginal = rows.Select(x => $"(container='{x["container"]}' AND docid={x["docid"]})");

var tableOriginal = await Sql.SelectTableAsync($@"SELECT hybrid 
FROM dms_link 
WHERE hybrid LIKE 'pers^%' 
AND ({filterOriginal.StrCat(" or ")})");

V17 Conversion

PostgreSQL allows comparision of touples/pairs

// using IN
var filterComposed = rows.StrCat(",", x => $"('{x["container"].ToStringNN()}', {x["docid"].ToInt()})");

var tableComposed = await Sql.SelectTableAsync($@"SELECT hybrid 
FROM dms_link 
WHERE hybrid LIKE 'pers^%' 
AND (container, docid) IN ({filterComposed})");

Simplifying to a single entry

var filter = "container = :container AND docid= :docid"; 

var table = await Sql.SelectTableAsync($@"SELECT hybrid
FROM dms_link
WHERE hybrid LIKE 'pers^%' 
AND ({filter})", new { container = "2009", docid = 1 });

Wrong!

var filter = rows.Select(x => $"(container = '{x["container"]}' AND docid ={x["docid"]})");

var table = await Sql.SelectTableAsync(@"SELECT hybrid
FROM dms_link
WHERE hybrid LIKE 'pers^%' 
AND (:filter) ", new { filter = filter.StrCat(" or ") });

Last updated