Join strings from a List while also formating them
String.Join can work with IEnumerable&lt;T&gt; so its not necessary to pass list to it. Same goes for foreach: you do not have to call ToList() at the end of your first query, you can loop through initial enumeration. 
With LINQ you can join strings like that:

//you can call `ToList()` at the end, if you need to cache query results, but you dont have to
var fields = db.sda(sql).Rows.OfType&lt;DataRow&gt;().Select(dr =&gt; dr.Field&lt;string&gt;("txt"));
//you can merge this Select with the previous one, if you are not going to re-use `fields` enumeration
var ou = fields.Select(f =&gt; "OU=" + f);
var dc = someOtherFields.Select(f =&gt; "DC=" + f);

var result = String.Join(",", ou.Concat(dc));