Existe-t-il un moyen plus court d'écrire ce qui suit ? (Quelque chose qui vérifierait null sans écrire explicitement != null
)
from item in list
where item.MyProperty != null
select item.MyProperty
Existe-t-il un moyen plus court d'écrire ce qui suit ? (Quelque chose qui vérifierait null sans écrire explicitement != null
)
from item in list
where item.MyProperty != null
select item.MyProperty
Vous pouvez utiliser l' opérateur OfType
. Il ignore les valeurs nulles dans la séquence source. Utilisez simplement le même type que MyProperty
et il ne filtrera rien d'autre.
// given:
// public T MyProperty { get; }
var nonNullItems = list.Select(x => x.MyProperty).OfType<T>();
Je déconseille cela cependant. Si vous souhaitez choisir des valeurs non nulles, quoi de plus explicite que de dire que vous voulez « les MyProperties de la liste qui ne sont pas nulles » ?
J'ai tendance à créer une classe statique contenant des fonctions de base pour des cas comme ceux-ci. Ils me permettent d'écrire des expressions comme
var myValues myItems.Select(x => x.Value).Where(Predicates.IsNotNull);
Et la collection de fonctions de prédicat :
public static class Predicates
{
public static bool IsNull<T>(T value) where T : class
{
return value == null;
}
public static bool IsNotNull<T>(T value) where T : class
{
return value != null;
}
public static bool IsNull<T>(T? nullableValue) where T : struct
{
return !nullableValue.HasValue;
}
public static bool IsNotNull<T>(T? nullableValue) where T : struct
{
return nullableValue.HasValue;
}
public static bool HasValue<T>(T? nullableValue) where T : struct
{
return nullableValue.HasValue;
}
public static bool HasNoValue<T>(T? nullableValue) where T : struct
{
return !nullableValue.HasValue;
}
}
// si vous devez vérifier si la MyProperty de tous les éléments n'a pas de valeur null
if (list.All(x => x.MyProperty != null))
// do something
// ou si vous devez vérifier si au moins la propriété d'un élément n'a pas de valeur null
if (list.Any(x => x.MyProperty != null))
// do something
Mais vous devez toujours vérifier null
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.