Вам необходимо сначала преобразовать data1, в вашем случае, вызвав ToString()
для каждого элемента.
Используйте это, если хотите вернуть строки.
List<int> data1 = new List<int> {1,2,3,4,5};
List<string> data2 = new List<string>{"6","3"};
var newData = data1.Select(i => i.ToString()).Intersect(data2);
Используйте это, если хотите вернуть целые числа.
List<int> data1 = new List<int> {1,2,3,4,5};
List<string> data2 = new List<string>{"6","3"};
var newData = data1.Intersect(data2.Select(s => int.Parse(s));
Обратите внимание, что это вызовет исключение, если не все строки являются числами. Таким образом, вы могли бы сначала сделать следующее:
int temp;
if(data2.All(s => int.TryParse(s, out temp)))
{
// All data2 strings are int's
}