String.Join fallen Nullwerte, die weniger Elemente zurückgeben als die Anzahl der Elemente im Array

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

  •  25-08-2022
  •  | 
  •  

Frage

Bei dieser Methode löst die resultierende Zeichenfolge die aufeinanderfolgenden Nullwerte ab. Ist th ?? unten falsch verwendet werden? Es verhält sich so, als würde es vor der Rückkehr alle konzernisch indizierten Nullwerte konkurriert

 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;
            }
        }

Hier ist mein Array

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

Mit diesem Array ist die angeschlossene Zeichenfolge ...

"0001020003, Bob Jones, Longboat"

War es hilfreich?

Lösung

Enumerable.Union Ausgeschlossenen Duplikate, sodass Sie nur eine einzige leere Instanz zurückgeben.

Versuchen Sie es zu verwenden Concat stattdessen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top