Vous devez d'abord transformer data1, dans votre cas en appelant ToString()
sur chaque élément.
Utilisez ceci si vous souhaitez renvoyer des chaînes.
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);
Utilisez ceci si vous souhaitez renvoyer des entiers.
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));
Notez que cela lèvera une exception si toutes les chaînes ne sont pas des nombres. Vous pouvez donc d'abord procéder comme suit pour vérifier :
int temp;
if(data2.All(s => int.TryParse(s, out temp)))
{
// All data2 strings are int's
}