linq 有条件地从列表中获取总和

piztneat  于 2023-02-01  发布在  其他
关注(0)|答案(5)|浏览(151)

我有一个类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的总和,其中PropertyDetails.Sequence〈sumValue=4
Linq解决方案是受欢迎的。

voj3qocg

voj3qocg1#

序列小于4的长度总和:

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

eimct9ow2#

可以使用linq中的Sum扩展方法,首先使用Where过滤掉不满足条件的项,然后使用Select(pd=>pd.Length).Sum()或重载,重载通过传递给Sum()的函数将该项从PropertyDetailMap到Length。

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

gjmwrych3#

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

rqqzpn5f4#

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

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

ruyhziif5#

decimal? dRemainingBalance = dataModal.Where(x => x.StatusID == 100 || x.StatusID == 200 || x.StatusID == 300).Sum(x => Convert.ToDecimal(x.RemainingBalance));

相关问题