有条件地从列表中获得总和

时间:2011-01-18 13:28:05

标签: c# linq list

我有一个类PropertyDetails:

public class PropertyDetails 
{      
    public int Sequence { get; set; } 

    public int Length { get; set; }   

    public string Type { get; set; } 
} 

我正在创建一个PropertyDetails列表

List<PropertyDetails> propertyDetailsList = new List<PropertyDetails>();

我希望Length&lt;列表中PropertyDetails.Sequence的总和为{{1}} sumValue = 4

欢迎Linq解决方案。

4 个答案:

答案 0 :(得分:16)

序列小于4的长度之和:

 var result = propertyDetailsList.Where(d => d.Sequence < 4)
                                 .Sum(d => d.Length);

答案 1 :(得分:7)

您可以使用linq的Sum扩展名方法。首先,使用Where过滤掉那些不符合您条件的项目。然后使用Select(pd=>pd.Length).Sum()或使用传递给Sum()的函数将PropertyDetail中的项映射到Length的重载。

const int sumValue = 4;
propertyDetailsList
    .Where(pd=>pd.Sequence < sumValue)
    .Sum(pd=>pd.Length);

答案 2 :(得分:6)

int sumLength = propertyDetailsList.Where(p => p.Sequence < 4).Sum(p => p.Length);

答案 3 :(得分:3)

var list = from p in propertyDetailsList
   where p.Sequence < 4
   select p.Length;

Console.WriteLine("sum is {0}", list .Sum())