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