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] "Longboat"
مع تلك الصفيف ، فإن السلسلة المنضمة التي تم إنشاؤها هي ...
"0001020003 ، Bob Jones ، ، Longboat"
المحلول
Enumerable.Union
يستبعد التكرارات ، لذلك لا تحصل إلا على مثيل فارغ واحد.
جرب استخدام Concat
في حين أن.