This can be solved by LINQ query…
String combinedColumnName = String.Join(“,”,(dt_inputData.Columns.Cast(Of DataColumn)().
Where(Function(col) dt_inputData.AsEnumerable().
Any(Function(row) listOfNames.Contains(row(col).ToString()))).
Select(Function(col) col.ColumnName)).ToList)
dt_inputData is the Excel Data
listOfNames is the array of names
(From c In dtData.Columns.Cast(Of DataColumn)
Let cn = c.ColumnName
Let cia = dtData.AsEnumerable.Select(Function (x) If(isNothing(x(cn)), "", x(cn).toString.Trim))
Let ftl = cia.Intersect(data_classified).Select(Function (x) Tuple.Create(x,cn))
From t In ftl
Group t By k1=t.item1 Into grp=Group
Let cl = grp.Select(Function (gt) gt.Item2).Distinct().toarray
Select tr= Tuple.Create(k1,cl)).toDictionary(Function (t) t.Item1, Function (t) t.Item2)