Zliczanie właściwości obiektu i zapis do listy

0

Hej.

Przepraszam, że pytam o tak trywialne rzeczy, jednak utknąłem.

Mam obiekt w którym znajduje się 7 propertisów typu decimal.

Jak sprytnie zapisać te propertisy do listy decimalów? Najlepiej za pomocą linqu?

Bo nie chce pisać czegoś takiego bo to lipa straszna:

 
 public decimal EstimateMin(CSVFileModel records)
        {
            List<decimal> tmpValues = new List<decimal>();
            tmpValues.Add(records.Value0);
            tmpValues.Add(records.Value1);
            tmpValues.Add(records.Value2);
            tmpValues.Add(records.Value3);
            tmpValues.Add(records.Value4);
            tmpValues.Add(records.Value5);
            tmpValues.Add(records.Value6);
            return tmpValues.Min();
        }
0
records.GetType().GetProperties().ToList().ForEach(x => tmpValues.Add((decimal)x.GetValue(records))

Można tak, ale jest to mało wydajne. Ostrożnie z tym.

0

Autor nic o tym nie wspomnial ale trzeba tez pamietac, ze przy takim podejsciu jesli CSVFileModel ma tez jeszcze jakies inne propertisy poza tymi Value0..Value6 to one tez zostana dodane do tej listy. Mozna tego uniknac dodajac odpiednie wywolanie metody Where po GetProperties.

0

Dzięki za słuszne uwagi.

W tej klasie akurat tak zrobiłem aby mieć tylko konkretną ilość właściwości. Bo każda z nich stanowi jedną kolumne pliku CSV :)

Dzięki za pomoc

0

Możesz też zaimplementować sobie interfejs IEnumerable i/lub IEnumerator. Ale wtedy te propertisy i tak będziesz musiał powypisywać tyle, że w klasie CSVFileModel. Możesz też przemyśleć, czy nie lepiej by było do tego użyć jakiejś tablicy. W tym wypadku użycie reflection wydaje się jednak najprostsze.

1 użytkowników online, w tym zalogowanych: 0, gości: 1