You can't do it with a Linq Join because a Linq Join absolutely requires that the joined columns are compared for being equal or not.
Looks like you want all records from A where "FieldName" occurs in any "ListName" of B. My first idea would be:
var distinctListNames = Dtlists.AsEnumerable()
.Select(r => r.Field<string>("ListName").ToUpper()).Distinct();
string joinedListNames = String.Join("$$$", distinctListNames);
foreach(DataRow row in fieldsforDynamicGroup.Rows)
{
if(joinedListNames.Contains(row.Field<string>("FieldName").ToUpper()))
{
}
}
The "$$$" serves as some weird separator so that matches "can't" occur across adjacent ListNames.
Maybe not the most performant of all solutions but the best I could come up with quickly ;)
Cheers!