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

Pra*_*ari 4 c# linq list

我有一个类PropertyDetails:

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

    public int Length { get; set; }   

    public string Type { get; set; } 
} 
Run Code Online (Sandbox Code Playgroud)

我正在创建一个PropertyDetails列表

List<PropertyDetails> propertyDetailsList = new List<PropertyDetails>();
Run Code Online (Sandbox Code Playgroud)

我希望Length列表中的总和PropertyDetails.Sequence<sumValue = 4

Linq解决方案是受欢迎的.

dtb*_*dtb 16

序列小于4的长度之和:

 var result = propertyDetailsList.Where(d => d.Sequence < 4)
                                 .Sum(d => d.Length);
Run Code Online (Sandbox Code Playgroud)


Cod*_*aos 7

您可以使用Sumlinq 的扩展方法.首先,您过滤掉那些不符合您条件的物品Where.然后你要么使用Select(pd=>pd.Length).Sum(),要么使用传递给的函数将PropertyDetail中的项映射到Length Sum().

const int sumValue = 4;
propertyDetailsList
    .Where(pd=>pd.Sequence < sumValue)
    .Sum(pd=>pd.Length);
Run Code Online (Sandbox Code Playgroud)


moi*_*eme 6

int sumLength = propertyDetailsList.Where(p => p.Sequence < 4).Sum(p => p.Length);
Run Code Online (Sandbox Code Playgroud)