String.join supprimant les valeurs nulles renvoyant moins d'éléments que le nombre d'éléments dans le tableau

StackOverflow https://stackoverflow.com/questions/20354044

  •  25-08-2022
  •  | 
  •  

Question

Compte tenu de cette méthode, la chaîne résultante créée laisse tomber les valeurs nulles consécutives. Est th ?? être utilisé mal ci-dessous? Il se comporte comme s'il concarente toutes les valeurs nulles indexées contenant une

 public static IEnumerable<string> ToCsv<T>(string separator, IEnumerable<T> objectlist)
        {
            FieldInfo[] fields = typeof(T).GetFields();
            PropertyInfo[] properties = typeof(T).GetProperties();
            yield return String.Join(separator, fields.Select(f => f.Name).Union(properties.Select(p => p.Name)).ToArray());
            foreach (var o in objectlist)
            {
                var pp = properties.Select(
                    p => (p.GetValue(o, null) ?? String.Empty));

                var val = string.Join(separator, fields.Select(f => (f.GetValue(o)).ToString() )
                    .Union(pp).ToArray());
                ;
                yield return val;
            }
        }

Voici mon tableau

[0]"0001020003"
1] "Bob Jones"
2] null
3] null
4] "Longboat"

Avec ce tableau, la chaîne jointe créée est ...

"0001020003, Bob Jones, Longboat"

Était-ce utile?

La solution

Enumerable.Union Exclut les doublons, vous n'obtenez donc qu'une seule instance vide.

Essayer d'utiliser Concat Au lieu.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top