Enumerable.Union
Ausgeschlossenen Duplikate, sodass Sie nur eine einzige leere Instanz zurückgeben.
Versuchen Sie es zu verwenden Concat
stattdessen.
Frage
Bei dieser Methode löst die resultierende Zeichenfolge die aufeinanderfolgenden Nullwerte ab. Ist th ??
unten falsch verwendet werden? Es verhält sich so, als würde es vor der Rückkehr alle konzernisch indizierten Nullwerte konkurriert
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;
}
}
Hier ist mein Array
[0]"0001020003"
1] "Bob Jones"
2] null
3] Null
4] "Longboat"
Mit diesem Array ist die angeschlossene Zeichenfolge ...
"0001020003, Bob Jones, Longboat"
Lösung
Enumerable.Union
Ausgeschlossenen Duplikate, sodass Sie nur eine einzige leere Instanz zurückgeben.
Versuchen Sie es zu verwenden Concat
stattdessen.