#c# #.net #linq #where-clause
#c# #.net #linq #where-предложение
Вопрос:
У меня есть класс:
class Cars
{
String Part;
int NrOfParts;
}
и List<Cars>
.
Я хотел бы получить sum
of NrOfParts
для определенного Part
с помощью лямбда-выражений.
Я бы хотел что-то вроде этого:
double sum = sil.Sum(item => item.NrOfParts WHERE item.Part == SomePart);
где sil
мой список и SomePart
какая конкретная часть, которую я ищу.
Проблема в том, что я не знаю, как добавить where
условие, чтобы ограничить поиск для конкретного случая.
Ответ №1:
Сначала нужно поместить предложение where (используя метод where), а затем суммировать по отфильтрованному списку.
double sum = sil.Where(i => i.Part == SomePart).Sum(i => i.NrOfParts);
Ответ №2:
Вы можете использовать это:
double sum = sil.Where(item => item.Part == SomePart).Sum(item => item.NrOfParts);
Ответ №3:
попробуйте это: —
double sum = Convert.ToDouble(sil.Where(item => item.Part == SomePart).Sum(item => item.NrOfParts));
Комментарии:
1. Sum вернет значение int (поскольку
NrOfParts
это int), и вам не нужно использовать Convert. ToDouble для перехода от int к double.
Ответ №4:
//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;
}
}
}