Это вернет все ColB
значения, которые содержат значения из вашего списка.
var dt = // your datatable
var list = new List<string>{ "Two", "Eight", "Three" };
var matches = dt.AsEnumerable()
.Where(dr => list.Any(l => dr.Field<string>("ColB").Contains(l)))
.Select(r => r.Field<string>("ColB"))
.ToList();
Обратите внимание, что Linq все еще выполняет закулисные циклы. Это может быть не очень эффективно (из-за Where/Any
), особенно для больших наборов данных.
Если вы хотите вернуть DataTable
, используйте CopyToDataTable()
:
var matches = dt.AsEnumerable()
.Where(dr => list.Any(l => dr.Field<string>("ColB").Contains(l)))
.CopyToDataTable();