Enumerable.Union
Excluye duplicados, por lo que solo se devuelve una sola instancia en blanco.
Intenta usar Concat
en cambio.
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"
Solución
Enumerable.Union
Excluye duplicados, por lo que solo se devuelve una sola instancia en blanco.
Intenta usar Concat
en cambio.