[asp.net-mvc]我是如何总结在 linq 中的子列表的?

标签: Asp.net-MVC Linq C#
发布时间: 2017/3/25 17:33:19
注意事项: 本文中文内容可能为机器翻译,如要查看英文原文请点击上面连接.

我想总结列表...子列表上的某个属性的示例︰

我有:

public class List1 {
public List<List2> List2 { get; set; }
}

public class List2 {
public int TotalUnits { get; set; }
}

我认为我有 List<List1> ,所以,我想要做一些事情一样︰

<%= Model.List1.Where(x.List2.Any()).Sum(x=>x.TotalUnits) .%>

显然一切后总和不起作用,但有什么的办法我能做这一行而无需在我的服务器端上创建一个新的 Dto 吗?

解决方法 1:

你想要的一切的总和 TotalUnits 在每一个 List2 实例吗? 如果是这样,然后执行下列操作

<%= Model.List1.SelectMany(x => x.List2).Sum(x => x.TotalUnits) %>

这里是这是如何工作的。

Model.List1.SelectMany(x => x.List2)

这需要 List<List1> 和变换它入 IEnumerable<List2>SelectMany是类似于 Select ,它是一个投影中枚举的元素除外,它预计将可枚举的结果。 可枚举结果的集合然后放入一个可枚举。 或用简单的话说,它铺平列表的列表。

.Sum(x => x.TotalUnits)

这只是总结 TotalUnits 的成员 List2

在您的代码中也是一个小的错字。 我认为它应该如下 (注意缺少 class 关键字)

public int TotalUnits { get; set;}
官方微信
官方QQ群
31647020