Je suit la fonction d'extension:Comment pouvons-nous retourner une collection vide en utilisant le rendement?
public static IEnumerable<T> Select<T>(this IDataReader reader,
Func<IDataReader, T> selector)
{
while (reader.Read())
{
yield return selector(reader);
}
}
qui est utilisé comme:
var readFields = dsReader.Select(r =>
{
var serviceResponse = myService.Decrypt<DateTime>(r.GetString(DATE_VALUE), r.GetInt32(DEK_ID));
if (serviceResponse.IsSuccessful)
{
return new DataField<DateFieldValue>
{
FieldValue = new DateFieldValue { Data = serviceResponse.Value }
};
}
return null;
});
if (!readFields.IsCollectionNullOrEmpty())
returnFinalFields.AddRange(readFields);
Le problème que je suis confronté ici est que même si serviceResponse.IsSuccessful est fausse la readFields n'est pas vide, il contient un énumérable avec un élément null. Existe-t-il un moyen de renvoyer une collection vide ici?
'Enumerable.Empty();' –
Y at-il un moyen de vérifier avant la reader.Read() pour voir s'il y a des données, et renvoient null avant d'entrer dans le temps? – Neil
@Neil renvoyant une valeur nulle d'un 'IEnumerable 'attendu est presque toujours un anti-pattern. –