Enumerable.Union
복제물을 제외하므로 단일 빈 인스턴스 만 반환합니다.
사용해보십시오 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] 널
3] 널
4] "Longboat"
해당 배열로 결합 된 문자열은 ...
"0001020003, 밥 존스, 롱 보트"
해결책
Enumerable.Union
복제물을 제외하므로 단일 빈 인스턴스 만 반환합니다.
사용해보십시오 Concat
대신에.