string.Oinin إسقاط القيم الفارغة لإرجاع عناصر أقل من عدد العناصر في المصفوفة

StackOverflow https://stackoverflow.com/questions/20354044

  •  25-08-2022
  •  | 
  •  

سؤال

بالنظر إلى هذه الطريقة ، فإن السلسلة الناتجة التي تم إنشاؤها تسقط القيم الفارغة المتتالية. هو ال ?? يجري استخدامه خطأ أدناه؟ إنه يتصرف كما لو أنه متسلسل جميع القيم الفارغة المفهرسة قبل العودة

 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 في حين أن.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top