String.Join che rilascia valori null che restituiscono meno elementi rispetto al numero di elementi nell'array

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

  •  25-08-2022
  •  | 
  •  

Domanda

Dato questo metodo, la stringa creata risultante rilascia i valori null consecutivi. È th ?? Essere usati di seguito di seguito? Si sta comportando come se stesse concatentualmente tutti i valori null indicizzati in modo conduttivo prima di restituire

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

Ecco il mio array

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

Con quell'array la stringa unita creata è ...

"0001020003, Bob Jones ,, Longboat"

È stato utile?

Soluzione

Enumerable.Union Esclude i duplicati, quindi stai ottenendo solo una singola istanza vuota.

Prova a usare Concat invece.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top