Enumerable.Union
複製を除外するため、1つの空白のインスタンスを返しているだけです。
使用してみてください Concat
代わりは。
質問
この方法を考慮して、結果の文字列は作成された文字列が連続したヌル値をドロップします。 thです ??
以下で間違って使用されていますか?それはまるでそれが戻る前に、すべての分析されたインデックス付きヌル値を連結しているかのように振る舞っています
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、ボブ・ジョーンズ、ロングボート"
解決
Enumerable.Union
複製を除外するため、1つの空白のインスタンスを返しているだけです。
使用してみてください Concat
代わりは。