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]无效
3]无效
4]“长船”
使用该数组,连接的字符串创建为...
“ 0001020003,鲍勃·琼斯,长船”
解决方案
Enumerable.Union
不包括重复项,因此您只会返回一个空白实例。
尝试使用 Concat
反而。