c# - 计算多个不同的值 - Linq
问题描述
我有一个点列表(每个点都有id,x,y,z
属性)。
我想获得属性的总不同值x,y,z
我在做:
var points = new List<MyPoint>
{
new MyPoint {Id = 0, X = 97.5, Y = 92.5, Z = -16.6666660308838},
new MyPoint {Id = 1, X = 292.5, Y = 92.5, Z = -16.6666660308838},
new MyPoint {Id = 2, X = 97.5, Y = 277.5, Z = -16.6666660308838},
new MyPoint {Id = 3, X = 292.5, Y = 277.5, Z = -16.6666660308838},
new MyPoint {Id = 4, X = 97.5, Y = 462.5, Z = -16.6666660308838},
new MyPoint {Id = 5, X = 292.5, Y = 462.5, Z = -16.6666660308838},
new MyPoint {Id = 6, X = 97.5, Y = 92.5, Z = -49.9999980926514},
new MyPoint {Id = 7, X = 292.5, Y = 92.5, Z = -49.9999980926514},
new MyPoint {Id = 8, X = 97.5, Y = 277.5, Z = -49.9999980926514},
new MyPoint {Id = 9, X = 292.5, Y = 277.5, Z = -49.9999980926514},
new MyPoint {Id = 10, X = 97.5, Y = 462.5, Z = -49.9999980926514},
new MyPoint {Id = 11, X = 292.5, Y = 462.5, Z = -49.9999980926514},
new MyPoint {Id = 12, X = 97.5, Y = 92.5, Z = -83.3333320617676},
new MyPoint {Id = 13, X = 292.5, Y = 92.5, Z = -83.3333320617676},
new MyPoint {Id = 14, X = 97.5, Y = 277.5, Z = -83.3333320617676},
new MyPoint {Id = 15, X = 292.5, Y = 277.5, Z = -83.3333320617676},
new MyPoint {Id = 16, X = 97.5, Y = 462.5, Z = -83.3333320617676},
new MyPoint {Id = 17, X = 292.5, Y = 462.5, Z = -83.3333320617676}
};
var result =
points
.GroupBy(l => l.Id)
.Select(g => new
{
sizeX = g.Select(l => l.X).Distinct().Count(),
sizeY = g.Select(l => l.Y).Distinct().Count(),
sizeZ = g.Select(l => l.Z).Distinct().Count()
});
我得到这个:
我该如何解决这个问题,所以我得到
X ->2
Y ->3
Z ->3
?
解决方案
是否遵循您的需要?
var result = new
{
sizeX = points.Select(l => l.X).Distinct().Count(),
sizeY = points.Select(l => l.Y).Distinct().Count(),
sizeZ = points.Select(l => l.Z).Distinct().Count()
};
推荐阅读
- qt - Qt/qmake 抑制来自第三方头文件的警告/问题
- python - 无法使用 xpath 找到带有事件标记的节点/元素
- spring - 构建某些组件后如何配置Spring Boot启动Tomcat?
- android - Xamarin:我如何以及在哪里指定设计方面?
- laravel - 包管理器 - 如何扩展具有模块更新能力的模块
- swift - 上一个视图控制器中的更新按钮
- java - 文件不存在时带有 InputStreamResource 情况的 Spring Boot 下载文件
- azure-devops - 从脚本创建 Azure 管道
- wordpress - id="wpadminbar 可视化问题
- javascript - 用 React js 写一个函数