给定此方法,创建的结果字符串会删除连续的空值。是 ?? 在下面被错误使用?它的行为好像在返回之前都在串联所有共同索引的零值

 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 反而。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top