chu*_*nce 5 c# linq asp.net-mvc
我想在列表的子列表中求和一个属性...示例:
我有:
public class List1 {
public List<List2> List2 { get; set; }
}
public class List2 {
public int TotalUnits { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
在我看来,我有一个List<List1>,所以我想做一些像:
<%= Model.List1.Where(x.List2.Any()).Sum(x=>x.TotalUnits) .%>
Run Code Online (Sandbox Code Playgroud)
显然Sum之后的所有内容都不起作用,但是有没有办法在一行中完成这个,而不必在我的服务器端创建一个新的Dto?
Jar*_*Par 13
你是想TotalUnits在每个List2例子中得到所有的总和吗?如果是,请执行以下操作
<%= Model.List1.SelectMany(x => x.List2).Sum(x => x.TotalUnits) %>
Run Code Online (Sandbox Code Playgroud)
这是如何工作的
Model.List1.SelectMany(x => x.List2)
Run Code Online (Sandbox Code Playgroud)
这需要List<List1>并将其转换为IEnumerable<List2>. SelectMany类似于Select它是枚举中元素的投影,除了它期望可枚举的结果.然后将可枚举结果的集合放入单个可枚举中.或者用简单的话来说,它会使列表列表变得平坦.
.Sum(x => x.TotalUnits)
Run Code Online (Sandbox Code Playgroud)
这只是总结的TotalUnits成员List2.
你的代码中也有一个小错字.我相信它应该如下所示(注意缺少的class关键字)
public int TotalUnits { get; set;}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5914 次 |
| 最近记录: |