在按另一个属性过滤后,按一个属性对列表求和

时间:2011-11-09 10:25:07

标签: c# .net linq where-clause

我有一个班级:

class Cars 
{
   String Part;
   int NrOfParts;
}

List<Cars>

我想使用lambda表达式获取特定sum的{​​{1}} NrOfParts

我想要这样的事情:

Part

其中 double sum = sil.Sum(item => item.NrOfParts WHERE item.Part == SomePart); 是我的列表,sil是我正在寻找的特定部分。

问题在于我不知道如何添加SomePart条件来限制搜索特定案例。

4 个答案:

答案 0 :(得分:4)

您需要先放置where子句(使用where方法),然后对已过滤的列表求和。

double sum = sil.Where(i => i.Part == SomePart).Sum(i => i.NrOfParts);

答案 1 :(得分:3)

您可以使用:

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

答案 2 :(得分:1)

试试这个: -

double sum = Convert.ToDouble(sil.Where(item => item.Part == SomePart).Sum(item => item.NrOfParts));

答案 3 :(得分:-1)

       //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;
            }
        }

    }