Filtrage des valeurs Null dans Select

J’ai une liste IQueryable d’objects de type T que je veux transformer en objects de type K

List tranformedList = originalList.Select(x => transform(x)).ToList(); 

la fonction de transformation renvoie null si elle ne peut pas transformer les objects. Si je veux filtrer les éléments nuls, puis-je appeler

 List tranformedList = originalList.Select(x => transform(x)) .Where(y => y != default(K)) .ToList(); 

ou existe-t-il un autre moyen de filtrer les éléments nuls lors de l’appel de Select dans LINQ?

Tu ne peux pas faire quelque chose comme ça:

 List tranformedList = originalList.Select(x => tranform(x)) .Where(y => y != null) //Check for nulls .ToList(); 

Qu’en est-il de

  List tranformedList = originalList .Select(x => transform(x)) .OfType() .ToList() 

Prend soin de désinstaller un se débarrasser des null en même temps (surtout quand K est une structure)

David BI ne vous crois pas que votre code .Where(y => y != null) fonctionne lorsque K est un int! Il n’y a AUCUN moyen d’obtenir ce code à comstackr si K est un int!

Vous pouvez essayer une boucle for et append les non-null à la nouvelle liste transformée.

 foreach (var original in originalList) { K transformed = tranform(orignal); if (transformed != null) { tranformedList.Add(transformed); } } 

ou vous pourriez essayer

  List tranformedList = (from t in (from o in originalList select tranform(o)) where t != null select t).ToList(); 

Je pense que Nathan travaille aussi bien mais est moins verbeux