String.Join soltando valores nulos que retornam menos itens do que o número de elementos na matriz

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

  •  25-08-2022
  •  | 
  •  

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"

Foi útil?

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top