Суммирование списка по одному свойству после фильтрации по другому свойству - PullRequest
0 голосов
/ 09 ноября 2011

У меня есть класс:

class Cars 
{
   String Part;
   int NrOfParts;
}

и List<Cars>.

Я хотел бы получить sum из NrOfParts для конкретного Part с использованием лямбда-выражений.

Я бы хотел что-то вроде этого:

 double sum = sil.Sum(item => item.NrOfParts WHERE item.Part == SomePart);

где sil - мой список, а SomePart - конкретная часть, которую я ищу.

Проблема в том, что я не знаю, как добавить условие where, чтобы ограничить поискконкретный случай.

Ответы [ 4 ]

4 голосов
/ 09 ноября 2011

Сначала нужно поместить предложение where (используя метод where), а затем суммировать отфильтрованный список.

double sum = sil.Where(i => i.Part == SomePart).Sum(i => i.NrOfParts);
3 голосов
/ 09 ноября 2011

Вы можете использовать это:

  double sum = sil.Where(item => item.Part == SomePart).Sum(item => item.NrOfParts);
1 голос
/ 09 ноября 2011

попробуйте это: -

double sum = Convert.ToDouble(sil.Where(item => item.Part == SomePart).Sum(item => item.NrOfParts));
0 голосов
/ 09 ноября 2011
       //Your range will come here
        IEnumerable<double> d=Enumerable.Range(2.67,100);
       // Your condition
       d.Where(d1 => d1 % 2.0 == 0).CumulativeSum();

 public static class Extension

    {
        public static IEnumerable<double> CumulativeSum(this IEnumerable<double> sequence)
        {
            double sum = 0;
            foreach (var item in sequence)
            {
                sum += item;
                yield return sum;
            }
        }

    }
...