Enumerable.Union
Exclui duplicatas, então você está recebendo apenas uma única instância em branco retornada.
Tente usar Concat
em vez de.
Pergunta
Dado esse método, a string resultante criada diminui os valores nulos consecutivos. É th ??
sendo usado errado abaixo? Está se comportando como se estivesse concatentando todos os valores nulos de forma consectiva antes de retornar
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;
}
}
Aqui está minha matriz
[0]"0001020003"
1] "Bob Jones"
2] NULL
3] NULL
4] "Longboat"
Com essa matriz, a string unida criada é ...
"0001020003, Bob Jones, Longboat"
Solução
Enumerable.Union
Exclui duplicatas, então você está recebendo apenas uma única instância em branco retornada.
Tente usar Concat
em vez de.