如何使用LINQ筛选出仅含宽度为100的分组对象列表?
需求与代码实现
数据与需求说明
我有一个包含column(int类型)和width(double类型)的对象集合,数据如下:
| column (int) | width (double) |
|---|---|
| 0 | 100 |
| 0 | 105 |
| 1 | 100 |
| 1 | 100 |
需要筛选出所有width值均为100的分组中的对象,比如示例里column=1的分组,最终要得到包含该分组下两个对象的列表。
现有C#代码片段需要补充完成:
var result = title.GroupBy(c => c.Column).?
补充后的完整代码
通过Where过滤符合条件的分组,再用SelectMany展开分组内的对象即可实现需求:
var result = title.GroupBy(c => c.Column) .Where(g => g.All(item => item.Width == 100)) .SelectMany(g => g) .ToList();
代码说明
GroupBy(c => c.Column):按Column字段对对象进行分组Where(g => g.All(item => item.Width == 100)):筛选出分组内所有对象的Width都等于100的分组SelectMany(g => g):将符合条件的分组中的所有对象平铺为一个集合ToList():将最终结果转换为List类型,得到目标对象列表
内容的提问来源于stack exchange,提问作者Tommer
相关产品推荐
相关产品推荐

