Enumerable.Union
Исключает дубликаты, поэтому вы получаете только один пустой экземпляр.
Попробуйте использовать Concat
вместо.
Вопрос
Учитывая этот метод, созданная строка, созданная строка, отбрасывает последовательные нулевые значения. Есть ??
Используется неправильно ниже? Он ведет себя так, как будто это соглашает все конспективно индексированные нулевые значения перед возвратом
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;
}
}
Вот мой массив
[0]"0001020003"
1] "Боб Джонс"
2] NULL
3] Нуль
4] "Лонгбот"
С этим массивом созданная соединенная строка - это ...
"0001020003, Боб Джонс, Longboat"
Решение
Enumerable.Union
Исключает дубликаты, поэтому вы получаете только один пустой экземпляр.
Попробуйте использовать Concat
вместо.