class Program
static void Main(string[] args)
var dt = new DataTable();
dt.Columns.Add("Key", typeof (int));
dt.Columns.Add("Value", typeof (string));
dt.Rows.Add(1, "-a-b-");
dt.Rows.Add(2, "-a-");
dt.Rows.Add(3, "-c-e-");
dt.Rows.Add(4, "-f-g-");
var list = new List<string> {"a", "b", "c"};
var query = from q in dt.AsEnumerable()
from t in list
where q.Field<string>("Value").Contains(t)
select q;
var vdt = query.Distinct().CopyToDataTable();
foreach (DataRow dr in vdt.Rows)
Console.WriteLine(dr["Key"] + "\t" + dr["Value"]);
}