String. Jugar los valores nulos que devuelven menos elementos que el número de elementos en la matriz

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

  •  25-08-2022
  •  | 
  •  

Pregunta

Dado este método, la cadena creada resultante elimina los valores nulos consecutivos. Es el ?? ¿Se usa mal a continuación? Se está comportando como si estuviera concatentando todos los valores nulos indexados consectivamente antes de regresar

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

Aquí está mi matriz

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

Con esa matriz, la cadena unida creada es ...

"0001020003, Bob Jones ,, Longboat"

¿Fue útil?

Solución

Enumerable.Union Excluye duplicados, por lo que solo se devuelve una sola instancia en blanco.

Intenta usar Concat en cambio.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top